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で見ると↓

discordpy220909-2

↑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が動作することを確認できた

discordpy220909-1

 

↑じゃん!!

指定したコマンドを入力すると、BOTのSCOちゃんが、ランダムに返答してくれた。w

可愛い💛

 

例えば、今回の場合は、

  • 背景色が、宇宙で、
  • 身体の色がノーマルな黄色で、
  • 顔は、クールな目で、
  • 飾りが、麦わら帽子

といった感じに。

 

まだ、free mint数が4人なので、

全部の箇所が該当するNFT保有者はいなかったものの、

該当するメタ情報が多い人を当選者とした。

 

自分のできる範囲で、NFTを使った企画を楽しみつつ。

 

おわりに

 

以上「NFTメタ情報をランダムに抽出して、宝くじ当選のプログラム」でした。

 

discordとpythonの相性が良いように思え。

chatworkから、引越して正解だったかもですね。

 

SCO-NFT保有者への勝手に配当企画!!

まだまだfree mintをお待ちしております!

気楽に参加してねん。記事下の企画からどうぞ!

 

それでは、また。

プレゼント特典‼ 動画視聴で35万分を貰っちゃおう

新NISAを学べるバフェッサ無料講座!!
メアド登録するだけで35万円分相当の特典が貰えるので、お忘れなく。
2倍速でも確認できるので、投資に興味のある人はご確認あれ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です