import os
import disnake
from disnake.ext import commands
bot = commands.Bot(command_prefix="!", help_command=None, intents=disnake.Intents.all())
@bot.event
async def on_ready():
print(f"bot {bot.user} is ready")
@bot.command()
@commands.is_owner()
async def unload(stx, extension):
bot.unload_extension(f"cogs.{extension}")
@bot.command()
@commands.is_owner()
async def load(stx, extension):
bot.load_extension(f"cogs.{extension}")
@bot.command()
@commands.is_owner()
async def reload(stx, extension):
bot.reload_extension(f"cogs.{extension}")
for filename in os.listdir("cogs"):
if filename.endswith(".py"):
bot.load_extension(f"cogs.{filename[:-3]}")
bot.run("token")
это фотография результата работы команды. Ее следует активировать один раз, но в итоге она активируется три раза. Я также добавил еще одну команду, и она тоже работает три раза
во втором блоке, если вы вызовете команду result, будут отображены три встраивания, а в третьем у пользователя будет еще одно сообщение, так же, как в первом блоке документируется событие on_massage, тогда встраивания будет два во втором еще одном сообщении
Мне нужно, чтобы бот отслеживал написанные сообщения и когда я пишу команду, встраивание должно отображаться с результатами того, кто написал больше всего сообщения и сколько. Должно быть одно встраивание и отображение нескольких. Команда срабатывает три раза, хотя я вызывал ее один раз.
пожалуйста, помогите
class Prize(commands.Cog): def __init__(self, bot): #initialization of variables dictionary for all users in channels or memes self.bot = bot self.member = {} self.memes_mas = {}
@commands.Cog.listener() async def on_ready(self): print("cog prize.py is redy!")
@commands.Cog.listener() async def on_message(self, ctx): member_name = ctx.author.name member_appel = ctx.author #Checking if a bot wrote and in which channel if ctx.author.bot: print(self.bot.user) else: channel = self.bot.get_channel(1188460762159644672) yearch = self.bot.get_channel(1321891075014529054) role = disnake.utils.get(ctx.guild.roles, id=1321144881296441415) if ctx.channel == channel: try: if self.memes_mas[member_name]: sp = self.memes_mas[member_name] sp.append(1) self.memes_mas[member_name] = sp else: sp = self.memes_mas[member_name] sp.append(1) self.memes_mas[member_name] = sp except KeyError: self.memes_mas[member_name] = [1] elif ctx.channel == yearch: await member_appel.remove_roles(role) else: try: if self.member[member_name]: sp = self.member[member_name] sp.append(1) self.member[member_name] = sp else: sp = self.member[member_name] sp.append(1) self.member[member_name] = sp except KeyError: self.member[member_name] = [1] print(self.member) await self.bot.process_commands(ctx)
@commands.command() async def result(self, ctx): #Result from all channels longest_list_key = max(self.member, key=lambda k: len(self.member[k])) role = disnake.utils.get(ctx.guild.roles, id=1321144881296441415) user = ctx.guild.get_member_named(longest_list_key) embed = disnake.Embed( title = "Нагорода найбалакучіший сервера", description = f"Нагороджується {longest_list_key} він написав {len(self.member[longest_list_key])} повідмлень за цей місяц", color = 0x800082, ) embed.set_thumbnail(url = user.display_avatar.url) await user.add_roles(role) await ctx.send(embed=embed) self.member.clear()
@commands.command() async def result_meme(self,ctx): #Result from memes longest_list_key1 = max(self.memes_mas, key=lambda k: len(self.memes_mas[k])) user1 = ctx.guild.get_member_named(longest_list_key1) embed1 = disnake.Embed( title = "Нагорода найсмішніший сервера", description = f"Нагороджується {longest_list_key1} він надіслав {len(self.memes_mas[longest_list_key1])} мемів в цей місяц", color = 0xfdd20 ) embed1.set_thumbnail(url = user1.display_avatar.url) await ctx.send(embed=embed1)
def setup(bot): bot.add_cog(Prize(bot)) [/code] второй винтик моего бота [code]import os
for filename in os.listdir("cogs"): if filename.endswith(".py"): bot.load_extension(f"cogs.{filename[:-3]}")
bot.run("token") [/code] это фотография результата работы команды. Ее следует активировать один раз, но в итоге она активируется три раза. Я также добавил еще одну команду, и она тоже работает три раза [img]https://i.sstatic.net/0kHSU3cC.png[/img]
[code]bot cultus DJ#2371 is ready cog user_join.py is redy! cog prize.py is redy! {'liv_malum': [1]} {'liv_malum': [1, 1]} {'liv_malum': [1, 1, 1]} {'liv_malum': [1, 1, 1, 1]} {'liv_malum': [1, 1, 1, 1, 1]} cultus DJ#2371 cultus DJ#2371 cultus DJ#2371 [/code] во втором блоке, если вы вызовете команду result, будут отображены три встраивания, а в третьем у пользователя будет еще одно сообщение, так же, как в первом блоке документируется событие on_massage, тогда встраивания будет два во втором еще одном сообщении Мне нужно, чтобы бот отслеживал написанные сообщения и когда я пишу команду, встраивание должно отображаться с результатами того, кто написал больше всего сообщения и сколько. Должно быть одно встраивание и отображение нескольких. Команда срабатывает три раза, хотя я вызывал ее один раз. пожалуйста, помогите
Я создаю бота для Discord на Python, используя disnake, но поскольку я новичок в этом деле, я не понимаю, как делать то, что хочу. Идея состоит в том, чтобы иметь один голосовой канал под названием «Создать голосовой чат», и когда пользователь...
Мой бот не может воспроизводить музыку из очереди через 15 минут после создания взаимодействия. Как я могу обновить текущее взаимодействие или продлить продолжительность текущего взаимодействия?
Я использую много методов и разных способов. Но я не...
Мой бот не может воспроизводить музыку из очереди через 15 минут после создания взаимодействия. Как я могу обновить текущее взаимодействие или продлить продолжительность текущего взаимодействия?
Я использую много методов и разных способов. Но я не...
В настоящее время использую Discord 2.4.0 и Python 3.12.1
На моем портале разработки -> Rich Presence -> Rich Presence Assets я загрузил изображение jpg размером 1024x1024 и назвал его «asset_id». . Я обязательно сохранил изменения, и после...
I am creating a daily streak command for my Discord bot using Python and the discord.py library. The code I'm using is based on an example I found online but I'm facing an issue.