Функция, которая брала сообщение из чата и писала в logs.txt
Я бы хотел сделать функцию для моего бота, которая могла брать из разных чатов сообщение пользователя и писать в logs.txt. Вместо gm в
'w = logs.write('\n' + gm)'
должна быть функция, которая записывает в 'logs.txt' в столбик с помощью ('\n') сообщения.
Есть проблема, сам gm выводит ошибку, что нужно конвертировать в str. Сам код не работает!
Это пример как мне бы хотелось.
import disnake # библиотека похожая на discord.py
from disnake.ext import commands
bot = commands.Bot(command_prefix='/', intents=disnake.Intents.all())
client = disnake.Client()
gm = bot.get_message()
with open('logs.txt', 'a') as logs:
w = logs.write('\n' + gm)
@bot.event
async def on_ready():
print("George готов к работе ╰(*°▽°*)╯.")
bot.run('TOKEN')
Ответы (1 шт):
Автор решения: Aleksandr Fetisov
→ Ссылка
Если я верно понял вопрос, то решение будет таким
import disnake
from disnake.ext import commands
bot = commands.Bot(command_prefix='/', intents=disnake.Intents.all())
client = disnake.Client()
@bot.event
async def on_message(message):
global gm
gm = message.content
await write_to_file(gm)
await bot.process_commands(message)
async def write_to_file(msg):
with open('logs.txt', 'a') as logs:
logs.write(msg + '\n')
@bot.event
async def on_ready():
print("George готов к работе ╰(*°▽°*)╯.")
bot.run('TOKEN')
Новое сообщение будет сохраняться в переменной gm, оно передается в функцтю write_to_file и уже пишет в logs Если с кода выше будет лететь ошибка вот еще вариант
import disnake
from disnake.ext import commands
bot = commands.Bot(command_prefix='/', intents=disnake.Intents.all())
async def write_to_file(msg: str):
with open('logs.txt', 'a') as logs:
logs.write(f"{msg}\n")
@bot.event
async def on_message(message: disnake.Message):
if message.author.bot:
return # игнорировать сообщения от ботов
await write_to_file(message.content)
await bot.process_commands(message)
@bot.event
async def on_ready():
print("George готов к работе ╰(*°▽°*)╯.")
bot.run('TOKEN')