mirror of
https://github.com/alterware/aw-bot.git
synced 2025-11-18 00:52:09 +00:00
feat: basic chat with Gemini
This commit is contained in:
1
bot/ai/__init__.py
Normal file
1
bot/ai/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
from .handle_request import forward_to_google_api
|
||||||
23
bot/ai/handle_request.py
Normal file
23
bot/ai/handle_request.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import os
|
||||||
|
from google import genai
|
||||||
|
|
||||||
|
API_KEY = os.getenv("GOOGLE_API_KEY")
|
||||||
|
|
||||||
|
|
||||||
|
async def forward_to_google_api(prompt):
|
||||||
|
"""
|
||||||
|
Forwards the message content and optional image URL to a Google API.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
prompt (discord.Message): The message object to forward.
|
||||||
|
"""
|
||||||
|
client = genai.Client(api_key=API_KEY)
|
||||||
|
|
||||||
|
response = client.models.generate_content(
|
||||||
|
model="gemini-2.0-flash", contents=prompt.content
|
||||||
|
)
|
||||||
|
|
||||||
|
await prompt.reply(
|
||||||
|
response.text,
|
||||||
|
mention_author=True,
|
||||||
|
)
|
||||||
@@ -4,6 +4,7 @@ import discord
|
|||||||
|
|
||||||
from bot.utils import timeout_member, aware_utcnow
|
from bot.utils import timeout_member, aware_utcnow
|
||||||
from bot.config import message_patterns
|
from bot.config import message_patterns
|
||||||
|
from bot.ai.handle_request import forward_to_google_api
|
||||||
|
|
||||||
from database import add_user_to_role, is_user_blacklisted
|
from database import add_user_to_role, is_user_blacklisted
|
||||||
|
|
||||||
@@ -34,6 +35,7 @@ ALLOWED_CHANNELS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
SPAM_ROLE_ID = 1350511935677927514
|
SPAM_ROLE_ID = 1350511935677927514
|
||||||
|
STAFF_ROLE_ID = 1112016152873414707
|
||||||
|
|
||||||
|
|
||||||
async def handle_dm(message):
|
async def handle_dm(message):
|
||||||
@@ -310,6 +312,14 @@ async def handle_message(message, bot):
|
|||||||
await handle_dm(message)
|
await handle_dm(message)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Check if the bot is mentioned
|
||||||
|
if bot.user in message.mentions:
|
||||||
|
staff_role = message.guild.get_role(STAFF_ROLE_ID)
|
||||||
|
member = message.guild.get_member(message.author.id)
|
||||||
|
if staff_role in member.roles:
|
||||||
|
await forward_to_google_api(message)
|
||||||
|
return
|
||||||
|
|
||||||
# Too many mentions
|
# Too many mentions
|
||||||
if len(message.mentions) >= 3:
|
if len(message.mentions) >= 3:
|
||||||
member = message.guild.get_member(message.author.id)
|
member = message.guild.get_member(message.author.id)
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ requests
|
|||||||
audioop-lts
|
audioop-lts
|
||||||
python-dotenv
|
python-dotenv
|
||||||
pynacl
|
pynacl
|
||||||
|
google-genai
|
||||||
|
|||||||
Reference in New Issue
Block a user