Discord.py 显示谁邀请了用户 [英] Discord.py show who invited a user

查看:17
本文介绍了Discord.py 显示谁邀请了用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在尝试找出一种方法来了解谁邀请了用户.从官方文档中,我认为 member 类将具有显示谁邀请他们的属性,但事实并非如此.我对获取邀请的用户的可能方法有一个非常模糊的想法,那就是获取服务器中的所有邀请,然后获取使用次数,当有人加入服务器时,它会检查是否有增加的邀请一种用途.但我不知道这是否是最有效的方法,或者至少是使用过的方法.

I am currently trying to figure out a way to know who invited a user. From the official docs, I would think that the member class would have an attribute showing who invited them, but it doesn't. I have a very faint idea of a possible method to get the user who invited and that would be to get all invites in the server then get the number of uses, when someone joins the server, it checks to see the invite that has gone up a use. But I don't know if this is the most efficient method or at least the used method.

推荐答案

制作一个 config.json 文件,内容为

Make a config.json file with the content of

{
    "token": "Bot token here",
    "server-id": "server id here",
    "logs-channel-id": "invite channel here"
}

然后保存.

创建一个名为 invites 的频道,然后填写 config.json 文件.然后创建一个名为 bot.py 的文件并将内容放入:

Make a channel called invites then fill in the config.json file. And then create a file called bot.py and put the contents of:

import asyncio
import datetime
import json
import os
import commands

client = discord.Client()
cfg = open("config.json", "r")
tmpconfig = cfg.read()
cfg.close()
config = json.loads(tmpconfig)

token = config["token"]
guild_id = config["server-id"]
logs_channel = config["logs-channel-id"]


invites = {}
last = ""

async def fetch():
 global last
 global invites
 await client.wait_until_ready()
 gld = client.get_guild(int(guild_id))
 logs = client.get_channel(int(logs_channel))
 while True:
  invs = await gld.invites()
  tmp = []
  for i in invs:
   for s in invites:
    if s[0] == i.code:
     if int(i.uses) > s[1]:
      usr = gld.get_member(int(last))
      testh = f"{usr.name} **joined**; Invited by **{i.inviter.name}** (**{str(i.uses)}** invites)"
      await logs.send(testh)
   tmp.append(tuple((i.code, i.uses)))
  invites = tmp
  await asyncio.sleep(4)


@client.event
async def on_ready():
 print("ready!")
 await client.change_presence(activity = discord.Activity(name = "joins", type = 2))


@client.event
async def on_member_join(meme):
 global last
 last = str(meme.id)




client.loop.create_task(fetch())
client.run(token)

然后打开终端运行python3 bot.py.如需更多帮助,请加入 this.

Then open the terminal and run python3 bot.py. And for more help join this.

这篇关于Discord.py 显示谁邀请了用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆