首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord.py --> channel.mention

Discord.py --> channel.mention
EN

Stack Overflow用户
提问于 2018-09-02 07:31:39
回答 2查看 13K关注 0票数 2

我正在尝试为discord服务器制作一个机器人,它只是简单地监听特定的消息,删除它们,然后将用户引导到不同的文本频道(通过提及它在可点击的链接中)

这是我现在所拥有的:

代码语言:javascript
复制
import Discord
import asyncio


client = discord.Client()


@client.event
async def on_message(message):
    msg = '{0.author.mention}\nWrong text channel\nUse '.format(message)
    if message.content.startswith('!p'):
        await client.delete_message(message)
        await client.send_message(message.channel, msg)
    return


client.run('')

理想情况下,我还希望使用startswith()而不仅仅是('!p')来搜索列表&忽略来自特定文本通道的所有消息,但我也不确定该如何做

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-02 08:38:18

当然,只需添加text_channel = client.get_channel('1234567890')并用text_channel.mention引用它(其中1234567890是您想要链接的频道的id )

因此,代码最终将如下所示

代码语言:javascript
复制
@client.event
async def on_message(message):
  text_channel = client.get_channel('1234567890')
  msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
  if message.content.startswith('!p'):
      await client.delete_message(message)
      await client.send_message(message.channel, msg)
  return

关于你的第二个问题,你可以这样做

代码语言:javascript
复制
  arr = ['!p','!a','!b']
  for a in arr:
    if message.content.startswith(a):
      break
  else:
    return

并将if message.content.startswith('!p'):完全删除

要忽略特定通道,只需在函数顶部执行if message.channel.id == "9876543210": (9876543210是要忽略其命令的通道的id )

经过这些更改后,代码如下所示

代码语言:javascript
复制
@client.event
async def on_message(message):
  if message.channel.id == "9876543210":
    return
  arr = ['!p','!a','!b']
  for a in arr:
    if message.content.startswith(a):
      break
  else:
    return
  text_channel = client.get_channel('1234567890')
  msg = '{0.author.mention}\nWrong text channel\nUse {1.mention}'.format(message,text_channel)
  await client.delete_message(message)
  await client.send_message(message.channel, msg)
  return
票数 1
EN

Stack Overflow用户

发布于 2020-07-04 01:49:38

不知道你的问题是否解决了,但对于所有关注这个主题的未来开发人员来说。让机器人提到一个频道的一个非常简单的方法是这样的……

代码语言:javascript
复制
<#channelID>

were通道ID是您想要提及的特定通道的不一致ID。

在一个例子中

代码语言:javascript
复制
await message.channel.send("Please go to <#channelID>")

老实说,我有点困惑,因为这个帖子上没有人提到这一点,所以我觉得我遗漏了一些你们都已经知道的东西。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52132913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档