背景
我经常在Discord上聊天,可能是因为我最近在Discord上做TRPG。
因此,这次,我们开发了一种BOT,它可以自动将便便表情符号附加到聊天中经常出现的"便便"上。
事实证明,如果这不是一个非常困难的机器人,那么实际上它可以在一个小时内操作(没有经验)。
让我们所有人都享受(无意义的)BOT开发,它可以像我一样丰富我们的生活!
本文是为具有Python基本知识的人撰写的。
此外,"粪便"一词无数次出现,但请原谅我。
实际开发
UnkoMan
开发环境
-
复制
- Python 3.8
- discord.py 1.3.3
- 烧瓶1.1.2
- 正常运行时间机器人
关于Repl.it
- 在线编码平台
- 您可以从浏览器中显示的IDE运行代码
- 您可以在网络上开发应用和网站
关于正常运行时间机器人
- 一项允许您免费监视网络(最多50个)的服务
创建一个机器人账户
转到Discord开发人员门户并使用您的Discord帐户登录
按下
-
在我的情况下是
Unko
按下
-
创建机器人后,您可以更改机器人的
Username -
我在这里给它起了名字
UnkoMan 。 (不要忘记按Save Changes ) - 您也可以在此处更改个人资料图片
-
确保
PUBLIC BOT 已打开 -
复制
TOKEN
在服务器
中注册机器人
-
转到
OAuth2 选项卡,并检查SCOPES 内部的Bot -
-
还要从下面的
BOT PERMISSIONS 检查BOT所需的权限-
这次我只需要文本权限,所以我只检查了
Send Messages 和Add Reactions
-
这次我只需要文本权限,所以我只检查了
-
然后将生成身份验证URL,因此将其复制并在浏览器中打开
- 顺便说一句,如果要将僵尸程序添加到另一个人拥有的服务器中,也请使用此身份验证URL。
-
选择您之前创建的服务器,然后按身份验证按钮
确保该机器人已在您的服务器上!
网络服务器
打开
- 不和谐
- 烧瓶
创建一个名为
- 使用Flask和Thread创建服务器
- 稍后让服务器ping Uptime机械手
server.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from flask import Flask from threading import Thread app = Flask("") @app.route("/") def main(): return "UnkoMan is alive!" def run(): app.run("0.0.0.0", port=8080) def keep_alive(): t = Thread(target=run) t.start() |
机器人
创建一个
1 | TOKEN=先ほどコピーしておいたTOKEN |
在
规格
-
在
UNNKO_LIST 中的单词上添加便便表情符号 - 如果提及您(或者被告知您"饿了"),请给出一些答复
- 当有新朋友进来时自我介绍
main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import os import discord from server import keep_alive # うんこに関する言葉のリスト UNKO_LIST = ["うん", "うんこ", "poop", "うんち", "unnko", "unko", "くそ", "クソ", "糞", "大便", "排泄物", "ばば", "糞便", "crap", "feces", "manure", "shit"] # .envからTOKENを取ってくる TOKEN = os.getenv("TOKEN") # 接続するためのオブジェクト client = discord.Client() # 起動時にログする # @デコレーターを使ってイベントをハンドルします @client.event async def on_ready(): print('UnkoMan is here') @client.event async def on_message(message): message.content = message.content.lower() # メッセージの送信者がBot自身だった場合は無視 if message.author == client.user: return # メンションされたら返信 if client.user in message.mentions: await reply_unko(message) # メッセージ自体または、メッセージの中にうんこ(うん以外)が入ってたら、うんこの絵文字 if message.content in UNKO_LIST or any(s in message.content for s in UNKO_LIST[1:]): await react_unko(message) # 隠しコマンド:お腹すいたら、特別メッセージを送るよ if "お腹すいた" in message.content: await reply_unko(message, "お腹すいた") async def reply_unko(message, special=""): if special == "お腹すいた": reply = "とりあえずうんこでも食っておけ(辛辣)" else: reply = f'{message.author.mention} 呼んだ?え?うんこ?あーそれは一理あるね' # メッセージの送信と送信したメッセージにうんこを sent_msg = await message.channel.send(reply) await react_unko(message) await react_unko(sent_msg) # うんこの絵文字をメッセージに付ける async def react_unko(message): await message.add_reaction("??") # 新しい人が入ってきたとき @client.event async def on_member_join(member): # guildはdiscord内のserverのこと for channel in member.guild.channels: # generalチャンネルでの自己紹介 if str(channel) == "general": await channel.send_message(f"""初めまして {member.mention}さん うんこマンです!""") # ウェブサーバーを起動する keep_alive() # Discordへ接続 client.run(TOKEN) |
在
复制中按
您的机器人现在应该在Discord的服务器上运行!
要记住的一件事是,repl.it闲置一小时后,repl将脱机。
作为对策,我将解释如何使用Uptime Robot一年365天,每天24小时操作该机器人。
正常运行时间机器人
将
-
检查
Alert Contacts To Notify ,好像发生了错误
附录
- " Repl它只是另一台主机,将无法全天候托管它,因此它将每24小时内停机几分钟"。因此,它似乎无法一天365天,每天24小时运行年。在24小时内,似乎有几分钟的停机时间,但让我们闭上眼睛...
在末尾
怎么样了?您是一个令人信服的机器人吗?
如果需要更多功能,建议阅读文档。
我在相关文章中发表了有关Qiita的文章,但似乎Heroku甚至可以免费托管机器人。 Heroku被误解了,因为我只将其用于Web应用程序开发,但是显然" Heroku的免费计划在30分钟内无法使Web应用程序进入睡眠状态,但是我介绍的步骤将使您进入Web。它一直在运行。没有任何问题,因为它不使用任何进程。"
好吧,我必须创建Procfile和其他文件,因此使用repl.it实现它并没有太大的麻烦...大声笑
这是我这次创建的机器人,但是如果有人想将其投入实际使用,请使用UnkoMan。
另外,如果您有任何意见或疑问,例如
相关文章?
- 在repl.it上托管discord.py机器人
- Python中的实用Discord Bot(不一致注释)
- 创建一个机器人账户