\n
.print("Hello\nworld!")
print("""Hello
world!""")
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')
await guild.create_text_channel("channel_name", category=guild.get_channel(732068815788336617))
# или
await guild.create_text_channel("channel_name", category=discord.utils.get(guild.channels, name="Category"))
# или
await guild.get_channel(732068815788336617).create_text_channel("channel_name")
# или
await discord.utils.get(guild.channels, name="Category").create_text_channel("channel_name")
Help on function fetch_member in module discord.guild:
async fetch_member(self, member_id)
class Horse: # тип - лошадь
...
def send_to_space(self, encapsulate: bool):
# Функция позволяющая отправить лошадь в космос
self.move(Place("Space"))
special_horse_in_vacuum = Horse(...) # Один определенный сферический конь
special_horse_in_vacuum.send_to_space(True) # Отправляем определенного коня в вакуум
special_horse_in_vacuum = Horse # Определение лошади
special_horse_in_vacuum.send_to_space(True) # Пытаемся отправить определение "лошадь" в космос
# Получаем TypeError: send_to_space() missing 1 required positional argument: 'encapsulate'
@bot.command()
async def test(ctx, member_id: int):
print(await ctx.guild.fetch_member(member_id)) # Получить пользователя через API
print(ctx.guild.get_member(member_id)) # Получить пользователя из кэша бота
@bot.command()
async def info(ctx, *, member: discord.Member):
await ctx.send(f"Вас называют: {member.display_name}. Ваш ID: {member.id}. etc...")
client
не определена, о чём и говорит ошибка. В данном контексте вам нужно брать client из класса, в котором находится команда: self.client
discord.Bot.get_guild
принимает в качестве аргумента - ID сервера, типа int
str
). Используйте конвертеры для автоматической конвертации аргументов. Помните также, что функция get_guild
(как и большая часть остальных get_
функций) - не асинхронная, и не работает с await@commands.command()
async def test(self, ctx, arg: int):
channel = self.client.get_guild(arg)
await channel.send("Я написал в канал, который ты указал!")
@bot.event
async def on_member_join(member):
if welcome_channel := member.guild.get_channel(754741279918410952):
await welcome_channel.send(f"Welcome, {member.mention} to {member.guild.name}")
%H
форматирует текущий час в двухзначном формате (00, 01, …, 23
).while True
в асинхронном коде не самая лучшая идея. Используйте asyncio tasks для этого. discord.py имеет расширение для упрощенного управления asyncio tasks: https://discordpy.readthedocs.io/en/stable/ext/tas... while True
в asyncio - коде, обычно, не самая лучшая идея, так как это практически всегда блокирует главный цикл.from discord.ext import tasks, commands
@tasks.loop(seconds=5.0)
async def printer():
print("5 seconds has passed")
printer.start()