NFTメタ情報をランダムに抽出して、宝くじ当選のプログラム
とみます(@20tomimasu)です。
discord.pyを触り始めて、早1週間。
ようやく、SCONFTのメタ情報に応じて、おみくじ? 宝くじ機能を実装することができました。
free mint してくれた方が、先月の1人に対して、今月は計4人になったので、ランダムで当選者を決めれます。w
プログラムは書いてないと忘れるので、ログに残しておきます。
randomモジュールを使いたい
前回、discord.pyのBOTアカウントを作成し、簡単な返答プログラムを描いてみた。
>>discord.pyの始め方 ‘intents’エラーに対して
なんとなく、コードの雰囲気を読み取れたので、
もう少し、具体的な機能を実装していこう。
NFTのメタ情報に応じて、
各カテゴリーにつき、ランダムに1つのデータをピックアップしていくというもの。
検索していくと、
が使えるそうで。
早速、pip でインストールしようとしたが、最近は、デフォルトで導入されているそうで、不要だった。w
rondomの実装
彼の記事が大変シンプルで分かりやすかった。
>>PythonでDiscordのボットサンプルを作成(rewrite版)
自分で作ったSCO-NFTのメタ情報を基に、書き換えていこう↓
最低限の必要な箇所を引用している。
import discord
import random
# 自分のBotのアクセストークンに置き換えてください
TOKEN = 'XXXXXXXXXX'
# 接続に必要なオブジェクトを生成
client = discord.Client(intents=discord.Intents.all())
# 起動時に動作する処理
@client.event
async def on_ready():
# 起動したらターミナルにログイン通知が表示される
print('ログインしました')
print(client.user.name) # ボットの名前
print(client.user.id) # ボットのID
print(discord.__version__) # discord.pyのバージョン
print('------')
# メッセージ受信時に動作する処理
@client.event
async def on_message(message):
# メッセージ送信者がBotだった場合は無視する
if message.author.bot:
return
# 「/sco」と発言したら「にゃーん」が返る処理
if message.content == '/sco':
await message.channel.send('にゃーん')
# 「/xxx」と発言したら、ランダムにNFTメタ情報が返る処理
elif message.content == '/background':
embed = discord.Embed(title="ランダムで抽出するにゃん!!",color=0xFFD700)
embed.add_field(name="①BACKGROUNDは…", value=random.choice(('[R]earth','[R]galaxy','[R]heart','[R]light','[SR]chaos','blue','pink','purple')), inline=False)
await message.channel.send(embed=embed)
elif message.content == '/body':
embed = discord.Embed(title="ランダムで抽出するにゃん!!",color=0xFFD700)
embed.add_field(name="②bodyは…", value=random.choice(('boiled','normal','wood')), inline=False)
await message.channel.send(embed=embed)
elif message.content == '/face':
embed = discord.Embed(title="ランダムで抽出するにゃん!!",color=0xFFD700)
embed.add_field(name="③faceは…", value=random.choice(('angry','cold','enjoy','satisfied','shock')), inline=False)
await message.channel.send(embed=embed)
elif message.content == '/fronthair':
embed = discord.Embed(title="ランダムで抽出するにゃん!!",color=0xFFD700)
embed.add_field(name="④fronthairは…", value=random.choice(('beer','cowboy','doller','glass','mugiwara','ribbon','sake','sensu')), inline=False)
await message.channel.send(embed=embed)
# Botの起動とDiscordサーバーへの接続
client.run(TOKEN)
ってな感じ。
SCO-NFTには、4つのカテゴリーが存在する↓
- background
- body
- face
- fronthair
openseaで見ると↓
↑Propetiesで描かれたところだね。
この4つのカテゴリーの中から、ランダムに1つずつ、pick up しようと。
Generative NFTを作った時のメタ情報の中から↓
①background 計8つの中から
- [R]earth
- [R]galaxy
- [R]heart
- [R]light
- [SR]chaos
- blue
- pink
- purple
②body 計3つの中から
- boiled
- normal
- wood
③face 計5つの中から
- angry
- cold
- enjoy
- satisfied
- shock
④fronthair 計8つの中から
- beer
- cowboy
- doller
- glass
- mugiwara
- ribbon
- sake
- sensu
結果↓
discordでBOTが動作することを確認できた
↑じゃん!!
指定したコマンドを入力すると、BOTのSCOちゃんが、ランダムに返答してくれた。w
可愛い💛
例えば、今回の場合は、
- 背景色が、宇宙で、
- 身体の色がノーマルな黄色で、
- 顔は、クールな目で、
- 飾りが、麦わら帽子
といった感じに。
まだ、free mint数が4人なので、
全部の箇所が該当するNFT保有者はいなかったものの、
該当するメタ情報が多い人を当選者とした。
自分のできる範囲で、NFTを使った企画を楽しみつつ。
おわりに
以上「NFTメタ情報をランダムに抽出して、宝くじ当選のプログラム」でした。
discordとpythonの相性が良いように思え。
chatworkから、引越して正解だったかもですね。
SCO-NFT保有者への勝手に配当企画!!
まだまだfree mintをお待ちしております!
気楽に参加してねん。記事下の企画からどうぞ!
それでは、また。
ようこそ! とみますん家へ (Discordコミュニティ)
・これまで発信してきた内容について、質問したい方
・気楽に相談したい方
・私への仕事依頼や共同コラボを考えていて、事前に検討したい方
・ちょっと様子を見たい方
を対象に、無料オンラインコミュニティを開設しました。
Discord(ディスコード)と呼ばれるSNSを利用しています。
とみますん家の間取り↓
・投資部屋 (不動産, DIY, 日経225オプション取引, sp500, VIX, fx)
・ゲーム部屋 (walk to earn, play to earn, Fortnite, ガジェット)
・制作部屋 (NFT, スコ猫ちゃん, AIイラスト制作)
など。
遊びに来てくれたお礼↓
・SCO猫ちゃんのNFTくじを無料で引ける。外れ無し!! (先着100名まで)
・さらに、そのNFTを保有していると、毎月配当を貰えるチャンスがある。(配当原資はこのブログから得た収益の10%から。)
・作品の先行ご案内
一言/
NFTだけ欲しいとかでもOK! お気兼ねなく。初期時代から私を応援してくれている証にもなります、何か良いことが起きるかも?
NFTくじを引いてくれた人数と配当実績/
'22年07月, 合計Mint数=1人, 配当104USDT
'22年08月, 合計Mint数=4人, 配当103USDT
'22年09月, 合計Mint数=7人, 配当 90USDT
'22年10月, 合計Mint数=9人, 配当105USDT
'22年11月, 合計Mint数=10人, 配当70USDT
'22年12月, 合計Mint数=10人, 配当124MATIC (12400円)
初めてみた所感/
・NFTやMetamaskなど全く触ったことが無い人のきっかけになっている。→初心者welcomeの雰囲気を作っていこう。
・Web3やNFTは日本の国家戦略、これからのWeb3ネイティブ時代に向けて基礎武装していこう。