import asyncio
import discord
from discord.ext import commands
import sqlite3
import random
bot = commands.Bot(command_prefix=('!'))
bot.remove_command( 'help' )
TOKEN = ""
IQ_PHRASES = ["a", "b", "c"]
@bot.command()
async def iq(ctx):
await ctx.send('сканирую...')
await asyncio.sleep(1)
a = random.choice(IQ_PHRASES)
await ctx.send(a)
bot.run(TOKEN)
mentions = [role.mention for role in ctx.author.roles[1:][:3]] # "Первые" 3 роли (в интерфейсе Дискорда - нижние роли)
mentions = [role.mention for role in ctx.author.roles[1:][-3:]] # "Последние" 3 роли (в интерфейсе Дискорда - верхние роли)
ROLES = [945967796849310659, 945967801044219854, 945967796847229780]
mentions = [role.mention for role in ctx.author.roles[1:] if role.id in ROLES]
@bot.command()
@commands.has_permissions(administrator=True)
async def news(ctx, ...):
...
@bot.command()
async def join(ctx, *, voice: discord.VoiceChannel):
# https://discordpy.readthedocs.io/en/stable/ext/commands/commands.html#converters
# https://discordpy.readthedocs.io/en/stable/ext/commands/commands.html#keyword-only-arguments
await voice.connect()
@bot.command()
async def join(ctx):
await bot.get_channel(117454459249562234).connect()
from json import loads
@commands.command()
@commands.is_owner()
async def test(ctx, *, j: loads):
await ctx.send(f"{type(j)}\n{j}")
@commands.command(cooldown_after_parsing=True)
async def cmd(ctx, ...):
"""..."""
...
@client.command() # Прекратите. Насиловать. Труп.
@commands.has_permsissions(administrator=True)
async def mp(ctx): # self если мы находимся в модуле или подклассе Bot'а
embed = discord.Embed(title="something here")
msg = await ctx.send(embed=embed)
client.react_role_msg = msg # Что лучше - "monkey patch"'ить объект бота или использовать global - решайте сами.
# В идеале - лучше создать модуль (cog/extension) или создать подкласс commands.Bot и использовать его, с объявленной переменной на уровне класса
@client.listen()
async def on_raw_reaction_add(payload):
if not getattr(client, "react_role_msg", None): # react_role_msg еще не объявлен у объекта бота
return
if payload.message_id != client.react_role_msg.id: # реакция проставлена на другом сообщении
return
if payload.emoji != "\N{WHITE HEAVY CHECK MARK}": # Реакция не "✅"
return
if not payload.member: # На тот случай если реакция пройдя все проверки выше окажется в личных сообщениях
return
await payload.member.add_roles(client.get_guild(398353602260405500).get_role(707803004268002512))
@commands.cooldown(1, 600, type=commands.BucketType.member)
if ban_entry := discord.utils.get(await member.guild.bans(), user__id=member.id):
print(member, "banned, reason: ", ban_entry.reason)
type(row[0])
, скорее всего вы храните/БД возвращает ID в виде строки, get_role
принимает ID в виде int
Команда выполняется - сообщение об удачном выполнении.
@command(...)
...
async def cmd(ctx, *args):
"""Описание команды"""
# делаем что-нибудь
await ctx.send("Сделано!")
Команда не выполняется - сообщение о не выполнении.