Discord BOT with Python,如何让它在我们发送命令的频道中回复(完成)
Posted
技术标签:
【中文标题】Discord BOT with Python,如何让它在我们发送命令的频道中回复(完成)【英文标题】:Discord BOT with Python, How to make it reply in the channel we send the command (Done) 【发布时间】:2020-12-05 08:51:45 【问题描述】:完成!感谢任何帮助过我的人:)也许您还有更好的答案,所以,请随时回答!
我知道,这可能看起来像一个愚蠢的问题,但如果你认为我是一个初学者,在 Python 中为 Discord 制作机器人,超出了我所有其他 Python 知识,而 Stack Overflow 可能是一个只是为了那个地方,我希望它不会。 (我太新了,当我看到我的机器人上线时,我真的把家里的每个人都吵醒了,哈哈)
正如我在其他帖子、教程等中看到的; (不要介意 , 和 的用法;可能是错误的)我们必须指定频道的ID,那么我们如何才能在用户发送命令的频道中回复呢?也许通过某种类型的命令获取当前频道的 ID?我不知道。
import discord
TOKEN = 'XXXXX'
client = discord.Client()
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!hello'):
msg = 'Hi 0.author.mention'.format(message)
await client.send_message(message.channel, msg)
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.run(TOKEN)
(因为我懒惰地重新生成令牌,所以我在这个例子中设置为 xxxxx,但不用担心我把它放在普通代码中。)
正如我所见,即使有相似的问题,也没有相同的问题(我看不到答案或问题,因为每个人都知道该怎么做)
问题出在 send_message 部分。它给出了一个错误。
【问题讨论】:
是的,我第一次提到谢谢。message.channel
不是从消息的频道中获取频道 ID 吗?我想我不明白你在找什么?
@TadhgMcDonald-Jensen 但是它给出了一个错误,说 send_message 不是客户端的有效命令。 (编辑:很抱歉以错误的方式提出实际问题,我尝试了我使用的许多其他堆栈溢出帖子的答案,如果没有工作就删除了。所以我可能从其中一个和一个我那里得到另一个错误在谈论,是那个。
【参考方案1】:
您只需要获取通道对象并使用message.channel.send()
而不是client.send_message()
向其发送消息
if message.content.startswith('!hello'):
msg = 'Hi 0.author.mention'.format(message)
await message.channel.send(msg)
将来您可能想尝试这样的事情,或者出于任何原因遇到它:
from discord.ext import commands
bot = commands.Bot(command_prefix='!')
@bot.command()
#This is defining a '!hello' command
async def hello(ctx):
#In this case you have to use the ctx to send the message
#Good to remember that ctx is NOT a parameter wich the user will give
msg = f'Hi ctx.author.mention'
await ctx.send(msg)
【讨论】:
谢谢@Voz!我已经修复了它,但它仍然有帮助! 不客气 :)。如果您选择我的最佳答案,我将不胜感激。 嗯,我以前从来没有这样做过...用复选图标..? 是的,如果您对如何操作有任何疑问,请使用检查图标 ***.com/help/someone-answers 检查此链接 刚刚做到了@Voz! :)【参考方案2】:您可以通过两种方式发送消息。一种是使用 on_message,但我建议不要这样做,因为它可能会干扰代码中的其他命令。
例子:
import discord
client = discord.Client(command_prefix='!')
@client.event
async def on_ready()
print('Bot is ready')
#example message
@client.command()
async def test(ctx):
await ctx.send('This message is a test')
client.run('YOUR TOKEN')
你可以通过在bot频道中执行“!test”来调用测试命令。
【讨论】:
【参考方案3】:导入操作系统 导入下一条线 从 nextcord.ext 导入命令
client = commands.Bot(command_prefix='Your Prefered Prefix')
@client.command() 异步定义 hi(ctx): 等待 ctx.send(f"hi ctx.author.name!")
client.run(Token)
【讨论】:
以上是关于Discord BOT with Python,如何让它在我们发送命令的频道中回复(完成)的主要内容,如果未能解决你的问题,请参考以下文章