Add slash command

This commit is contained in:
2024-12-22 05:04:20 +01:00
parent 4f53f91e4a
commit a26e3ebf08
4 changed files with 112 additions and 54 deletions

66
misc.py Normal file
View File

@ -0,0 +1,66 @@
from __future__ import annotations
import logging
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import hikari
from openai import OpenAI
from openai.types.chat.chat_completion import ChatCompletion
logger: logging.Logger = logging.getLogger(__name__)
def get_allowed_users() -> list[str]:
"""Get the list of allowed users to interact with the bot.
Returns:
The list of allowed users.
"""
return [
"thelovinator",
"killyoy",
"forgefilip",
"plubplub",
"nobot",
"kao172",
]
def get_trigger_keywords(bot: hikari.GatewayBotAware) -> list[str]:
"""Get the list of trigger keywords to respond to.
Returns:
The list of trigger keywords.
"""
bot_user: hikari.OwnUser | None = bot.get_me()
bot_mention_string: str = f"<@{bot_user.id}>" if bot_user else ""
notification_keywords: list[str] = ["lovibot", bot_mention_string]
return notification_keywords
def chat(user_message: str, openai_client: OpenAI) -> str | None:
"""Chat with the bot using the OpenAI API.
Args:
user_message: The message to send to OpenAI.
openai_client: The OpenAI client to use.
Returns:
The response from the AI model.
"""
completion: ChatCompletion = openai_client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "developer",
"content": "You are in a Discord group chat with people above the age of 30. Use Discord Markdown to format messages if needed.", # noqa: E501
},
{"role": "user", "content": user_message},
],
)
response: str | None = completion.choices[0].message.content
logger.info("AI response: %s", response)
return response