DFarm

Posted on Dec 24, 2021Read on Mirror.xyz

HTTP请求第二课:Discord聊天机器人

最近社群里面讨论的最多就是Discord聊天机器人的事情,我说了好几遍了,不要点菜,要写哪些东西我都在众筹的那个页面写过了,催啥?

你让我写啥我就写啥?我啥都会?凭啥给你写?

各位老板,今天就是Discord聊天机器人编写教程~

其实之前已经分享过这个老哥的帖子了,但是很多人跟我说不会用,其实比较简单,我今天拆分一下,大家就能明白了~

教程

首先我们先看一下随机获取发言的方法:

import requests, random

def get_context():
    context_list = [
        "hello bro", "let's go !", "to the moon!", "nice", "project", "have a good day",
        "good", "luck", "how's going", "so do i", "yeah", "same to me", "1", "cool", "so far so good",
        "hi~", "of course", "really", "cool~", "ok", "what?", "why?", "not bad", "well done", "great",
        "perferct", "thanks", "ture", "yes", "no", "here", "interesting", "it's funny", "i am tired"
    ]
    text = random.choice(context_list)
    return text

context_list里面就是准备好的剧本,你可以替换成你的剧本,然后random会随机取一条,返回。

def chat(authorization, chanel_id):
    # 伪装头
    header = {
        "Authorization": authorization,
        "Content-Type": "application/json",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"
    }
    # 整理发送的内容、生成nonce
    msg = {
        "content": get_context(),
        "nonce": "82329451214{}33232234".format(random.randrange(0, 1000)),  # 923802142370693120 923802484009336832
        "tts": False
    }
    # 拼接频道地址
    url = 'https://discord.com/api/v9/channels/{}/messages'.format(chanel_id)
    res = requests.post(url=url, headers=header, data=json.dumps(msg), proxies=proxies)
    print(res.content)

这段代码比较简单,就是一个post请求,上节课我们都用过了。proxies看大家的需求去加就行。

使用的时候调用chat方法,传入authorization和chanel_id即可,authorization就是用户授权。chanel_id就是频道ID,下面我们说说这两个值如何取,我们打开discord网页版,登录你的账号。

这时我们拿到了频道ID,再打开浏览器的控制台,打开方式如图:

然后选择network标签之后,再发生任意内容到频道:

这时候有个messages的请求,就是我们chat方法里面模仿的请求。

在这里可以看到authorization参数,每个用户的authorization是唯一的,所以我们可以保存长期使用。chanel_id要根据你发言的频道去取。

好了,至此authorization和chanel_id都有了,直接运行 chat(authorization,chanel_id) 即可。

另外messages的请求大家可以仔细看看,认真模仿,代码中去掉了很多参数。

运行完我的代码,和上面的内容,再回头去看科学家DAO老哥的帖子你就会开朗很多,老哥做了一个循环,定时去发言,还可以多频道、多账户发言。

https://scientistdao.org/d/40-discord

然后老哥的代码里面还有个get_context方法是去取频道中别人的发言照抄,大家也可以参考,剧本、照抄都是形式,根据自己的策略搞就行~

最后

这种机器人大家写的时候,一定要找聊天热门的项目去刷。剧本一定要写的非常好,要不然管理员可以看出来你发言的是机器人。

也可以对接一些AI的接口,不过目前的AI没有那么智能,很容易被发现是机器人,所以策略一定要想好,被封出频道只能换号了。

本文的代码和分析,只是帮助你去了解自动发言的方法,请不要用于恶意用途!技术无罪,请大家合理运用!

感谢阅读,望认真学习。