@wunderer

Как тэгнуть случайного пользователя?

Пытаюсь написать функцию для тэга случайного пользователя.
Искал в интернете решение этой задачки, но пока ничего не помогло.
Intent включен в настройках бота.
Сам код:
import random 
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix = '-')
client = discord.Client()
token = 'тут токен'
intents = discord.Intents()
intents.members = True

@bot.event
async def on_ready():
	print('Logged in as')
	print(bot.user.name)
	print(bot.user.id)
	print('------')

@bot.command(intents=intents, aliases=['кто'])
async def _kto(ctx, *, question):
	try:
		await ctx.send(f'Вопрос: кто {question}\n Ответ: {random.choice(ctx.channel.guild.members).mention}')
	except:
		await ctx.send('Error. The command is not found or does not work')
bot.run(token)

Бот либо тегает себя, либо если я использую другой вариант скопипащенный с stack overflow
@client.command()
@commands.guild_only()
async def tag(ctx):
    try:
        await ctx.send(choice(tuple(member.mention for member in ctx.guild.members if not member.bot and member!=ctx.author)))
    except IndexError:
        await ctx.send("You are the only human member on it!")

То он выдает "You are the only human member on it!"
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
Аргумент intents передаётся в конструктор бота, а не в декоратор команды: https://discordpy.readthedocs.io/en/stable/intents.html

import random 
import discord
from discord.ext import commands

intents = discord.Intents()
intents.members = True
bot = commands.Bot(intents = intents, command_prefix = '-')

...

@bot.command(name="кто")
async def who(ctx, *, question):  
    # Python поддерживает полный UTF-8 в именах переменных и функций
    # Но использовать не ASCII английские имена переменных - плохая идея, см. PEP8:
    # https://www.python.org/dev/peps/pep-0008/
    # https://pep8.ru/doc/pep8/ - на русском
    # Программисты, которые не говорят на английском языке, 
    # пожалуйста, пишите комментарии на английском, 
    # если только вы не уверены на 120 процентов, 
    # что ваш код никогда не будут читать люди, не знающие вашего родного языка.
    await ctx.send(f'Вопрос: кто {question}\nОтвет: {random.choice(ctx.channel.guild.members).mention}')
bot.run("your_token_here")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы