Discord.py Получение имени канала и имени сервера возвращает сообщение об ошибке - PullRequest
2 голосов
/ 21 июня 2020

В настоящее время я пытаюсь создать бота Discord, который, когда кто-то произносит команду, говорит, на каком сервере и в каком канале они находятся. Раньше я мог это сделать, но раньше я использовал on_message(message) и if message.content.startswith('$hello'). Я недавно начал использовать @bot.command и все еще пытаюсь привыкнуть к нему. Я пробовал использовать message.guild.name и message.channel.mention, но получаю сообщение об ошибке. Undefined variable 'message' Я предполагаю, что это потому, что при моей старой настройке в on_message(message) я определяю сообщение, однако с моим текущим кодом, похоже, это не работает.

import discord
import asyncio
from discord.ext import commands
botToken = token
bot = commands.Bot(command_prefix = '#')
client = discord.Client()
@bot.event
async def on_ready():
    print('Bot is online and ready.')
@bot.command()
async def whereAmI(ctx, *, messageContents):
    link = await ctx.channel.create_invite(max_age = 300)
    message = 'You are in {message.guild.name} in the {message.channel.mention} channel with an invite link of ' + link
    await ctx.message.author.send(message)
bot.run(botToken)

И я знаю, что это мог бы написать этому человеку DM, однако в настоящее время я работаю только над своим тестовым ботом, прежде чем передать команду своему основному. Если у вас есть идеи получше, дайте мне знать. И причина, по которой у меня есть переменная, заключается в том, что я планирую включить переменные в конечный продукт.

Если что-то не имеет смысла, дайте мне знать, и я отредактирую его, чтобы, надеюсь, сделать больше очистите и при необходимости дайте больше контекста.

1 Ответ

2 голосов
/ 21 июня 2020

Чтобы получить объект сообщения, вам нужно использовать переданный «контекст» (ctx). Значит, это будут ctx.message.guild.name и ctx.message.channel.mention. Документы по контексту

С другой стороны, Bot является подклассом Client. Так что все, что может делать Клиент, может делать и Бот. Вам не нужны клиент и бот, только бот. Документы подкласса ботов

...