備忘録風雑記ブログ備忘録的な雑記ブログです。現在は主にWebサービス・アプリ開発と仮想通貨です。Discordどもども、連日のDiscordBOT記事です。今回はDiscordにアフィリエイト的な機能を実装してみようと思います。今回の記事で実装するのは、サーバーへの招待数によってサーバー内の役割を自動付与する機能です。これは今度記事にしようと思っている、とあるサーバーで実装されていた機能なのですが、面白そうだったので、自分でも実装してみました。したら、より簡単・正確に実装する方法があるのかもしれませんので、あくまで趣味で作ったということをご了承ください。方法アフィリエイトの機能ではありませんが、Discordには招待状の仕組みがあり、サーバーへ招待した数が画面上で確認することができます。ここで表示される招待数は、サーバーに出入りすることにより、いくらでも水増しすることができてしまいます。そんな仕様でアフィリエイトを行おうとすると、誰でも最高の報酬を獲得することができてしまいます。いうわけで今回は上記の招待状の機能を使いつつ、BOTとデータベースを活用することでより正確なアフィリエイトシステムを構築します。機能としては、招待数によってサーバー内のRoleが変化するような動きを作ります。例のごとくDiscordのBOTを作成するので、公式サイトからBOTの登録をやります。やり方は、以前の記事に書いてあるので、そちらをご覧ください。こちらを参考にBOTトークンの獲得までやってください。備忘録風雑記ブログ意外と簡単だったからDiscordのBOTを作ってみるよhttp://foolean.net/p/1657どうも、久しぶりの技術系の記事です。しても、学生としてやるべきことを放置してこちらの記事を書いていきます。いうのも、最近なにかとDiscordを使う機会が増えたのですが、とあるサーバーでみたBOTの働きが面白くて、作りたくなってしまいました。いうわ...次に、データベースの準備です。自分はすでにMAMPを導入していたのでデータベース環境は整っていました。本記事ではデータベース環境の構築は省略させてもらいます。Pythonのコードからデータベースを扱えるように環境を整えてください。テーブルはユーザーテーブル(user)と招待状テーブル(invite)を用意します。それぞれのテーブルは以下の感じの設計をしてみました。intデータベースの構造については、個人的に納得していません。プログラムを書くでは本記事のメインになる、コードを掲載していきます。今回は機能によってファイルを分割しているので、ちょっと件数が増えてしまいましたが、ただ実行したい人は単純にコピペしていけば大丈夫です。データベースの情報やDiscordのトークンなどを記述しておくものです。招待数による役割(Role)の変更を定義もこのファイルでやっていきます。役割の変更の機能を別のものに変えるのであれば、その部分は不要です。4],]これらの設定ファイルをご自身の環境や実現したい招待数に対応するように書き換えてください。以降のコードでこのファイルを読み込んでいきますので、ちゃんと書き換えておいてください。今回はデータベースをいじることが多いので、それらの操作をまとめて関数化しておきます。以降のコードでデータベースを使用するときは、ここで定義した関数を使用します。str(user_id))_mysql.commit()cursor.close()基本的にSELECT文とINSERT文をいちいち書くのがめんどくさかっただけなので、必ずこのようなファイルを作る必要なはないのですが、管理はしやすい気がするので...自己満足です。次は、役職関係の関数をまとめたものです。役職変更の機能を別のものに変更する場合は、もちろん不要ですので、ご自身のやりたいことに合わせて作成してください。登録・確認を行う機能を持つBOTの本体コードです。実際にプログラムを実行する際は、このコードを指定して実行します。new_role[1])client.run(_config.DISCORD_BOT_TOKEN)このコードでやっているのは、招待状で誰かがサーバーに登録した瞬間に、DBに登録してある情報とDiscord上の招待数の差を獲得し、もし過去に登録してない人で招待数が増えていたのであれば、有効招待数を増加させます。有効招待数が設定した値を超えていれば役職を変更するという動作をします。以上でコードの掲載はおしまいです。役職の変更部分の機能を別のものにしたいのであれば、”ランクアップの確認アンド更新”の部分を書き換えればいいのではないかなと思います。本記事によって発生したいかなる損害も保証しかねます。掲載したコードは最適解ではないのでご了承ください。今回紹介したプログラムは招待状の期限が無いものだけに制限しています。制限があるものはプログラムの実行時や招待時に削除されます。プログラムが実行されていない時に発生した招待は全て無効になってしまいます。Discordの仕様上、数ミリ秒単位で同時に登録がなされた場合、招待数が複数カウントされてしまう可能性があります。』というエンジニア特化型のQ&Aサービスがオススメです。自分もどうしても分からないことがあったら、時々質問しにいきますが、かなりニッチな質問にも意外と早く回答がつくのでとても頼もしいです。おわりにさて、ここまで頑張ってきました。Discordにアフィリエイト的なシステムを構築するのに、どれほどの需要があるのかはわかりませんが、面白そうだったので、実装・記事にしました。冒険心のある方は是非使ってみてね。Say数列をPythonで書いてみたよNextDiscordに簡易的な投票システムを構築するよPrev関連記事Discordに簡易的な投票システムを構築するよどもども、久しぶりの更新になりました。...JPEGファイルを劣化させないで容量削減したよどうも最近更新を怠っているのは、とあるWebサイト開発に熱中しているからです。本気で仮想通貨を増やしたいからLuckygames.ioの完全攻略をするよどうもお久しぶりです。...今後のサイト更新についてどうも、お久しぶりです。本日は本サイトの今後の更新方針について書いていきます。3月が終わってしまった。三月が終わって新年度です。...仮想通貨の仕手って稼げるんだってさー。参加しなきゃね!はい。過去最高にアホなタイトルになりました。Faucet"で始めました。55ビューUbuntuがフリーズした時に読むといいと思う。