【问题标题】:making a greetings bot for discord制作一个不和谐的问候机器人
【发布时间】:2022-02-08 13:00:41
【问题描述】:

所以,我正在尝试做一个机器人,当人们加入时从列表中获取问候,然后随机化并提及他们,但我无法在选择随机问候的同时提及用户,我该怎么办?

import discord
import os
import random

client = discord.Client()

invites = ["has been invited by"]

username = client.get_user(id)

starter_greetings = [

  "hola como estas"
]

@client.event
async def on_ready():
  print('we have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content

  channel = client.get_channel(940394154972823593)

  if any(word in msg for word in invites):
    await channel.send(username + random.choice(starter_greetings))

client.run(os.getenv('TOKEN'))

【问题讨论】:

  • 使用on_member_join

标签: python discord.py bots


【解决方案1】:

首先,您可以通过on_member_join 事件检查用户是否加入服务器,而不是检查消息的内容,该事件在用户加入服务器时运行。您可以向特定频道发送消息,并让您的机器人使用discord.Member.mention 提及用户。请看下面的示例。

starter_greetings = [
  "hola como estas",
  "welcome to the server",
  "enjoy your stay"
]

@client.event
async def on_member_join(member):
    join_channel = member.guild.get_channel(YOUR_CHANNEL_ID) # get the channel of your choice
    await join_channel.send(f"{member.mention} {random.choice(starter_greetings)}")
    # send the member and a random option from starter_greetings list

【讨论】:

  • 好的,所以我添加了这个例子,但是当有人加入时它没有提到用户,还不得不编辑代码prnt.sc/26qf9gm
  • 抱歉@Flandead 我忘记在random.choice 函数中添加')'。这也可以在您的错误中看到,代码已在该行修复。
  • @ChaoticNebula 是的,这已经在我的回答中,并且 Flandead 的回溯包括它。 discord.Member.mentionmember.mention 相同,因为 memberdiscord.Member 对象。你能告诉我哪里还需要这个吗?提前致谢。
  • 感谢所有评论试图提供帮助的人。我可以确认它现在可以工作了
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 2021-08-19
  • 2022-11-10
  • 1970-01-01
  • 2021-01-17
  • 2020-01-04
相关资源
最近更新 更多