@commands.command()
async def cmd(ctx):
if ctx.message.reference and isinstance(ctx.message.reference.resolved, discord.Message):
await ctx.send(ctx.message.reference.resolved.content)
else:
await ctx.send("You need to reply to message")
@commands.cooldown(rate, per, type=<BucketType.default: 0>)
@client.command()
@commands.cooldown(1, 60, commands.BucketType.user) # Один раз в 60 секунд на пользователя (глобально)
async def cmd(ctx, ...):
...
@client.listen("on_command_error")
async def cooldown_message(ctx, error):
if isinstance(error, commands.CommandOnCooldown):
await ctx.send(f"{ctx.command.qualified_name} можно использовать только {error.cooldown.rate} раз в {error.cooldown.per} секунд. Попробуйте через {error.retry_after} секунд.")
discord
, а не в discord.ext.commands
: https://discordpy.readthedocs.io/en/stable/api.htm...import discord # скорее всего такой импорт у вас уже есть
@command.error
async def command_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send(f'Отсутствует требуемый аргумент: {error.param}')
if isinstance(error, commands.MissingPermissions):
await ctx.send(f'Недостаточно прав: {error.missing_perms}')
if isinstance(error, discord.HTTPException):
await ctx.send(f'Произошла ошибка при запросе: {error.status} ({error.text})')
\n
.print("Hello\nworld!")
print("""Hello
world!""")
c = discord.utils.get(guild.channels, position=8)
await c.delete()
ctx.channel.create_webhook
self
имеет смысл только в классе.@Bot.command()
- рискну предположить что класса там нет.self
из объявления функции:async def infouser(self, ctx, member: discord.Member = None):
bot.wait_for(...)
: https://discordpy.readthedocs.io/en/stable/ext/com... Traceback (most recent call last):
File "/home/fixator/Red-V3/lib/python3.8/site-packages/redbot/core/dev_commands.py", line 202, in _eval
result = await func()
File "<string>", line 13, in func
AttributeError: 'NoneType' object has no attribute 'edit'
discord.Message.edit
не возвращает ничего..edit
оригинального сообщения:load1=discord.Embed(title='Прогресс __0%__',color=2358184)
load2=discord.Embed(title='Прогресс __25%__',color=2358184)
load3=discord.Embed(title='Прогресс __50%__',color=2358184)
load4=discord.Embed(title='Прогресс __75%__',color=2358184)
load5=discord.Embed(title='Прогресс __100%__',color=2358184)
complete=discord.Embed(title='Загрузка завершена!',color=2358184)
msg=await ctx.send(embed=load1)
await asyncio.sleep(1)
await msg.edit(embed=load2)
await asyncio.sleep(1)
await msg.edit(embed=load3)
await asyncio.sleep(1)
await msg.edit(embed=load4)
await asyncio.sleep(1)
await msg.edit(embed=load5)
await asyncio.sleep(1)
await msg.edit(embed=complete)
get_user
ID в формате int
.author = bot.get_user(int(my_user_id))
await message_channel.send(f'{author.mention} - Welcome back!')
get_user
получает данные из кэша бота, и для его заполнения нужны intentsawait message_channel.send(f'<@{my_user_id}> - Welcome back!')
category
передаётся объект канала-категории.@bot.command()
async def cmdname(ctx):
category = bot.get_channel(788488692362607662) # ID категории
await category.create_voice_channel(ctx.author.name)
# ИЛИ
await ctx.guild.create_voice_channel(ctx.author.name, category = category)
# примеры использования, на данный момент, может измениться в будущем:
await ctx.send("my reply to your message", reference=discord.MessageReference(message_id=861988287927326702, channel_id=554470291913241936))
await ctx.send("my reply to your message", reference=discord.MessageReference.from_message(ctx.message))
await ctx.send("my reply to your message", reference=ctx.message.to_reference())
await ctx.reply("my reply to your message", mention_author=False)
await bot.http.request(
discord.http.Route(
"POST", "/channels/{channel_id}/messages", channel_id=ctx.channel.id
),
json={
"content": "test",
"message_reference": {
"guild_id": "453391932705247478",
"channel_id": "554470291913241936",
"message_id": "861988287927326702",
},
},
)
import discord
from discord.ext import commands
TOKEN = 'Скрыт'
VER = '0.4.1 VChCT build (Voice Channel Connect Test' # см. PEP8
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix=settings['prefix'], description=VER, intents=intents)
@bot.command()
@commands.guild_only() # https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.guild_only
async def connect(ctx):
"""Connect to yours voice channel"""
if (voice := ctx.author.voice) and (voice_channel := voice.channel):
await voice_channel.connect()
await ctx.send(channel.id)
else:
await ctx.send('you arent in a vc')
member
у RawReactionActionEvent
заполняется только при добавлении реакции: https://discordpy.readthedocs.io/en/stable/api.htm...fetch_member
и get_member
для получения участников по ID:@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload):
if not (guild := self.client.get_guild(payload.guild_id)):
# Удаление реакции произошло вне сервера
return
if not (member := guild.get_member(payload.user_id)):
# Реакция удалена, но её автора во время удаления не было на сервере
return
if payload.message_id == list.GAMEPOST_ID:
channel = self.client.get_channel(payload.channel_id) # получаем объект канала
emoji = str(payload.emoji)
role = guild.get_role(list.GAMEROLES[emoji])
await member.remove_roles(role)
print('[ROLE] Role {1.name} has been remove for user {0.display_name}'.format(member, role))