У меня есть код выдающий роль при написание !Dota, а как можно сделать так чтобы бот работал в определённом канале и при другой команде например !DelDota забирал эту роль??
# ответ на сообщение
@bot.command()
async def start(ctx):
await ctx.send('Разработка')
# Выдача роли при отправке сообщения
@bot.command()
async def Dota(ctx):
await ctx.send('Вы получили роль "Дотер"')
author = ctx.message.author
guild = bot.get_guild(984403171743006740)
role = guild.get_role(1091398609020387380)
await author.add_roles(role)
1. красиво оформить вопрос. Код засунуть в тег <соdе>, это удобно делать кнопкой </>. Указать нормальные теги вопроса. Зачем из 3 если можно один discord.py?
2. Погуглить. Если уже не выйдет, в вопросе показать как пытались, что не вышло
Ты можешь использовать ctx.channel.id для проверки того, находится ли сообщение в определенном канале.
@bot.command()
async def Dota(ctx):
if ctx.channel.id == ID_КАНАЛА:
await ctx.send('Вы получили роль "Дотер"')
author = ctx.message.author
guild = bot.get_guild(984403171743006740)
role = guild.get_role(1091398609020387380)
await author.add_roles(role)
else:
await ctx.send('Эта команда может быть использована только в определенном канале')
Чтобы забрать роль у пользователя, ты можешь использовать remove_roles
@bot.command()
async def DelDota(ctx):
if ctx.channel.id == ID_КАНАЛА:
await ctx.send('У вас забрали роль "Дотер"')
author = ctx.message.author
guild = bot.get_guild(984403171743006740)
role = guild.get_role(1091398609020387380)
await author.remove_roles(role)
else:
await ctx.send('Эта команда может быть использована только в определенном канале')
Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </> Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
Когда вы регистрировались, вы обещали выполнять Регламент. Ваше сообщение нарушило сразу несколько параграфов Регламента.
Если вы будете продолжать нарушать Регламент, ваши вопросы могут быть удалены, а аккаунт заблокирован модераторами временно или навсегда.
Будьте благоразумны.