discord bot автоматически отправляет вызов каждому отдельному каналу каждые 24 часа

#python #discord.py

#python #discord.py

Вопрос:

Я новичок в создании ботов discord, и я хочу создать бота, который отправляет вызовы кодирования для 5 разных языков (python, java, javascript, c # и html). Я настроил каналы в своем тестовом discord, и я дал администратору бота возможность читать и записывать в каналах и т. Д. Я пытаюсь выяснить, как настроить его на 24-часовой таймер, и когда этот таймер достигает нуля, он отправляет вызовы кода для каждого языка на соответствующий канал discord.

 import random
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='!')
TOKEN = ''

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')

@bot.command()
async def hello(ctx, member: discord.member):
    await ctx.send(f"Hello {member.name}")

@bot.command()
async def 

bot.run(TOKEN)
  

до сих пор мне удавалось подключить бота к Сети, и я научился давать ему пользовательские команды, но я понятия не имею, с чего начать то, что я пытаюсь сделать, и любые советы или подсказки будут с благодарностью приняты 🙂 TYIA

Комментарии:

1. Проверьте discordpy.readthedocs.io/en/latest/ext/tasks

Ответ №1:

Вы можете использовать discord.ext.tasks для цикла, который выполняется каждые 24 часа. Если у вас есть объект гильдии, который вы можете использовать for channel in guild.channels: , а затем отправить сообщение. Вы можете получить объект гильдии с идентификатором: bot.get_guild(id) . Все вместе это будет выглядеть так:

 import random
import discord
from discord.ext import commands, tasks # Import the tasks module

bot = commands.Bot(command_prefix='!')
TOKEN = ''

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')
    challenge.start() # Start the loop

@bot.command()
async def hello(ctx, member: discord.member):
    await ctx.send(f"Hello {member.name}")

@tasks.loop(seconds=86400) # Loops every 24h
async def challenge():
    guild = await bot.get_guild(id) # Gets the guild object by the id
    for channel in guild.channels:  # Runs a command in every channel
        await channel.send(message) # Says the message

bot.run(TOKEN)
  

Я не тестировал это, и это может не сработать.

Комментарии:

1. Я ввел свой токен бота, и когда я его запустил, он выдал следующую ошибку:

2. ошибка типа guild = await bot.get_guild (id): объект, не являющийся типом, не может быть использован в выражении ‘await’

3. Извините за поздний ответ, но вы должны указать идентификатор сервера, на который вы хотите отправлять сообщения, в bot.get_guild(id). Просто замените идентификатор в () на идентификатор сервера.