Discord BOT 与 Python,如何让它在我们发送命令的频道中回复(完成)
Discord BOT with Python, How to make it reply in the channel we send the command (Done)
Done! Thanks to anyone who helped me out:) Still maybe you have better answers, so, feel free to answer!
我知道,这可能看起来像一个愚蠢的问题,但如果你认为我是 为 Discord 制作机器人的初学者 Python其他 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.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)
您可以通过两种方式发送消息。一种是使用 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”即可调用测试指令
进口os
导入下一条线
来自 nextcord.ext 导入命令
客户=commands.Bot(command_prefix='Your Prefered Prefix')
@client.command()
异步定义高(ctx):
等待 ctx.send(f"嗨 {ctx.author.name}!")
client.run(代币)
Done! Thanks to anyone who helped me out:) Still maybe you have better answers, so, feel free to answer!
我知道,这可能看起来像一个愚蠢的问题,但如果你认为我是 为 Discord 制作机器人的初学者 Python其他 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.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)
您可以通过两种方式发送消息。一种是使用 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”即可调用测试指令
进口os 导入下一条线 来自 nextcord.ext 导入命令
客户=commands.Bot(command_prefix='Your Prefered Prefix')
@client.command() 异步定义高(ctx): 等待 ctx.send(f"嗨 {ctx.author.name}!")
client.run(代币)