#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). Просто замените идентификатор в () на идентификатор сервера.