DiscordChatter / app.py
Radosław Wolnik (aider)
<think>
67f247a
<<<<<<< SEARCH
import commands
from .message_handler import on_message, respond_to_chat
from .utils import split_string, generate, generate_response
from ChatAI.chat_ai import pipe as ai
DEFAULT_CHATTER_CHANNEL="ai_chatter"
# Set up Discord bot intents and command prefix
intents = discord.Intents.default()
intents.message_content = True
intents.messages = True
bot = commands.Bot(command_prefix="!", intents=intents)
# Dictionary to track message count per channel
message_counts = {}
@bot.event
async def on_message(message):
guild = message.guild # Get the guild (server) the message is from
channel = discord.utils.get(guild.text_channels, name=DEFAULT_CHATTER_CHANNEL)
# Verification
if message.channel != channel or message.author.bot: return;
# Ensure tracking exists for this channel
if message.channel.id not in message_counts:
message_counts[message.channel.id] = 0
# Increment message count
message_counts[message.channel.id] += 1
print(message_counts[message.channel.id])
await respond_to_chat(message.content)
messages = []
if message_counts[message.channel.id] >= 10: # Check if the count reaches 10
async for message in channel.history(limit=10):
messages.append(message.content)
previous_messages = ("\n".join(messages))
await respond_to_chat(previous_messages)
message_counts[message.channel.id] = 0 # Reset the counter
await bot.process_commands(message) # Ensure commands still work
async def respond_to_chat(message: str) ->str:
response = generate(message)
parts = split_string(response)
guild = discord.utils.get(bot.guilds, name="PrzebieralniaKoedukacyjna")
channel = discord.utils.get(guild.channels, name=DEFAULT_CHATTER_CHANNEL)
for part in parts:
await channel.send(part)
return str("\n".join(parts))
def x():
pass
def split_string(text: str) -> list[str]:
"""Helper function to split text into chunks"""
return [text[i:i+1900] for i in range(0, len(text), 1900)]
def generate(
prompt, temperature=0.0, max_new_tokens=2048, top_p=0.95, repetition_penalty=1.0
):
if temperature == 0.0: temperature = random.uniform(1e-2, 0.9)
temperature = float(temperature)
top_p = float(top_p)
generate_kwargs = dict(
temperature=temperature,
max_new_tokens=max_new_tokens,
top_p=top_p,
repetition_penalty=repetition_penalty,
do_sample=True,
seed=42,
)
return ai.text_generation(prompt, **generate_kwargs, stream=False, details=False, return_full_text=True)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user}') # Logs bot login in console
guild = discord.utils.get(bot.guilds, name="PrzebieralniaKoedukacyjna")
if guild:
# Get the channel by name
channel = discord.utils.get(guild.channels, name=DEFAULT_CHATTER_CHANNEL)
if channel:
print(f"Channel found: {channel.name} (ID: {channel.id})")
else:
print("Channel not found!")
await channel.send(f"{bot.user} logged in, runnin on 'huggingface.co/spaces")
import os
from dotenv import load_dotenv
env_path = os.path.join(os.path.dirname(__file__), ".env.ini")
load_dotenv(env_path)
str(os.getenv("DISCORD_TOKEN_CHATTER"))
print(str(os.getenv("DISCORD_TOKEN_CHATTER")))
#bot.run(DISCORD_TOKEN_CHATTER)
=======
from commands import Commands
from .message_handler import on_message, respond_to_chat
from .bot import Bot
from .utils import split_string, generate
from ChatAI.chat_ai import ChatAI
import logging
bot = Commands().bot
>>>>>>> REPLACE