初めて作ったbotに機能追加したら瞬間半自動A級botになった件について/S級になれたかもしれないbot
この記事は仮想通貨botter Advent Calendar 2024 シリーズ1の14日目に掲載させていただく記事です。
はじめに
おはようございます。しろいのです。
トレードで一生損失を出していますが、なんとか生き残ってます。メインはBCGとNFTを触ってましたが最近はたまにbotにも手を出してたりします。
botは難しいもので庶民ができるものじゃないって思ってる人も多いと思います。しろいのもそう思っていました。今ではchatgptがあるので参入も勉強もとっても簡単になったと思います。何を作るかが難しいと思います。
そもそもbotってなにができるの?
botterの人はみんな口を揃えて言うのは
「何でもできるよ」
何でもできると言われても何ができるのかよくわからないので困ると思います。
中学の時に数学で初めて確率を習った時を思い出しました。
最初に習うサイコロの問題ができるようになっても、他の確率問題は解き方がわからず解けないのと似てる気がしました。
色々解くと思い付きが増えてある程度初見の問題も解けるようになってきても、まったく閃かない問題があるのも変わらないです。
鬼滅の刃にでてくるたんじろうは壁が明確に見えててうらやましいなって少し思います。
収入に関しては確かに分厚い壁が見えますが、技術の壁はあんまり見えないです。認識できていないので、知識を増やして分厚い壁が見えるようになりたいなって思います。
でも、本当は見えていても目をそらして見えなかったことにしてるだけかもしれません。
未だに本当にbotterの言ってることはわからないので凡人にもわかる言葉で教えてほしいっていつも思ってます。
お願いだから私がわかること話してよ!
botって何なの? botってどういうことなの?
わかんないわかんないわかんないわかんない! わかんなーい!!
botterの言うことは、昔っから何ひとつ、これっぽっちも、わかんないのよぉ!
1.初めて作ったbot
運用の仕方や何で収入上げたかは色々な面から省かせてもらいます。
結果としては月に現物でC級程度稼げました。
初めはどんなbot?
TwitterのURLを入力して実行するとRT&いいねをするというbotです。
TwitterのURLを探して入力するのは手動なので全自動とは行きませんが、収益を上げることができました。
「DAOっぽいの(通称:白鯖)」のレベル制限10の部屋を見たことある人は知ってる人が多いと思います。
一回目の機能追加(B級)
〈追加した機能〉
・CSVに入力した文章を読み込んでリプライをする機能
リプライ文を先に書かないといけませんがこれも収益を上げることができました。
使用できる機会が多く継続的ではありませんがB級取れることがちらほらありました。
「DAOっぽいの(通称:白鯖)」のレベル制限20の部屋に詳細と代表作品を書いてあるので興味がある人は読んでみてください。
二回目の機能追加(瞬間A級)
〈追加した機能〉
・指定したdiscordの部屋のチャットから最新10件のメッセージを取得してURLを抽出する機能
・Twitterがロックされた場合discordにてロックされてることを送信する機能
portalを皮切りにTL汚染銘柄が流行った時に悔しい思いをしたので、二個目以降の銘柄にのれるように追加をしました。
※TL汚染銘柄・・・指定されたメンション・ハッシュタグをつけて投稿し、「RT・いいね・リプライ」をもらうこと、行うことでポイントが貯まる性質のあるプロジェクトのためにエアドロ活動をしている人が無限に同じことを投稿、RTでTLがそれに染まったことから勝手に呼んでいます。
Twitterでハッシュタグ等から検索してするverも作成しましたが、お返しが来る確率が高いのは各鯖で作成されていたレイド専用チャンネルのものをリツイートいいねリプをするものを使用しました。
似たようなものを投稿することやRTしてるせいか半日に一回はロックをかけられたためそこは手動で解除をしていました。
様々なパターンがあって1番きつかったのはヒモの問題でした。20回正解しないといけないのですが、連続正解が難しく何十回何百回と解いた記憶があります。本当に苦しかったです。
ロックが頻繁に起きるため、投稿ができなかった場合の例外処理を入れて、3回試みて全部失敗した場合はdiscordの自鯖にロックされてることを送信するコードも追加しました。
たくさんTL汚染銘柄はありましたが、その後のは花咲かず、途中で辞めてしまったので結果は分かりません。
やってることはすごく簡単なのに、ラッキーですが最終的にA級になるbotを作成することができました!
継続して全自動で取れるようなbotを作成することはできたことがありませんが、一部を自動化するだけでも一気に収益が増えるものもあります!
2.S級になれたかもしれないbot
HYPEのせいで他の全てがしょぼどろな感じを出していますが直近でもME、XIONと大きめなエアドロがありました。
そのうちのXIONですが、ほぼリファラルを踏ませただけの垢で500枚配布されました。
その後のタスクはいまいちわからなかったり、面倒くさくてやった記憶がないのでおそらくリファだけでもらえてます。
リファ踏ませられるのはインフルだけじゃん、一般には無理だよって思う方も多いと思います。しろいのもフォロワーは多いですがトレードや爆損した時のインプはありますがリファをつけると何故か一気にインプがなくなります…何でだろ…
話を戻しますがXIONのリファに必要だったものは
・メールアドレス
・Twitterアカウント
この二つのみでした。
20?・70・100くらいでNFTがミント出来た記憶があります。
Twitter垢を70.100もないよって人も多いと思います。しろいのも持ってません。
しかし、XIONに限ってはTwitter連携を外すことで無限にリファを踏むことができました。
これを利用して自己リファをするコードを書きました。
実際に使用したコードは下記になります。
from playwright.sync_api import sync_playwright
from playwright.sync_api import Playwright
from playwright.sync_api import Page
import time
import csv
import email
import ssl
import imaplib
from email.header import decode_header, make_header
import re
def mail_receive():
"""
(1) IMAP4クライアントインスタンスを作成する
* Gmail, Yahoo!メールともに nego_combo = ("ssl", 993)
- 143ポートが暗号化なし
- 暗号化なしとSTARTTLSは動作確認できるサーバがなかった(コードが正しいかも不明)
"""
host = "imap.gmail.com"
nego_combo = ("ssl", 993) # ("通信方式", port番号)
if nego_combo[0] == "no-encrypt":
imapclient = imaplib.IMAP4(host, nego_combo[1])
elif nego_combo[0] == "starttls":
context = ssl.create_default_context()
imapclient = imaplib.IMAP4(host, nego_combo[1])
imapclient.starttls(ssl_context=context)
elif nego_combo[0] == "ssl":
context = ssl.create_default_context()
imapclient = imaplib.IMAP4_SSL(host, nego_combo[1], ssl_context=context)
imapclient.debug = 3 # 各命令をトレースする
"""
(2) IMAP4サーバにログインする
"""
username = "XXXXXXX@gmail.com"
password = "XXXXXXXXX"
imapclient.login(username, password)
"""
(3) メール受信(MIMEメッセージを受信)
"""
imapclient.select() # メールボックスの選択
typ, data = imapclient.search(None, "ALL") # data = [b"1 2 3 4 ..."]
datas = data[0].split()
fetch_num = 1 # 取得したいメッセージの数
if (len(datas)-fetch_num) < 0:
fetch_num = len(datas)
msg_list = [] # 取得したMIMEメッセージを格納するリスト
for num in datas[len(datas)-fetch_num::]:
typ, data = imapclient.fetch(num, '(RFC822)')
msg = email.message_from_bytes(data[0][1])
msg_list.append(msg)
imapclient.close()
imapclient.logout()
"""
受信したメール(MIMEメッセージ)の確認
"""
for msg in msg_list:
# 各ヘッダ情報はディクショナリのようにアクセスできる
from_addr = str(make_header(decode_header(msg["From"])))
subject = str(make_header(decode_header(msg["Subject"])))
# 本文(payload)を取得する
for part in msg.walk():
payload = part.get_payload(decode=True)
if payload is None:
continue
charset = part.get_content_charset()
if charset is not None:
payload = payload.decode(charset, "ignore")
# 括弧 () 内の数字を抽出する正規表現パターン
pattern = r'\b(\d{6})\b'
# # payloadから数字を抽出
#
extracted_numbers = re.search(pattern, payload)
# 抽出された数字を表示
#for number in extracted_numbers:
#print("抽出された数字:", number)
#print(payload)
return extracted_numbers[0]
profile_directory = "C:/Users/kuron/AppData/Local/Google/Chrome/User Data/postionYou/04new-window"
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
profile_directory,
headless=False,
channel="chrome",
args=["--blink-settings=imagesEnabled=false"]
)
page = browser.new_page()
for n in range(151,200):
print(str(n) + "を始めます")
page.goto("https://xion.bonusblock.io?r=WVMSdEz5")
# メール登録
page.get_by_text("CONNECT").click()
page.get_by_placeholder("example@email.com").click()
page.get_by_placeholder("example@email.com").fill("XXXXXXXXXX+" + str(n) + "@gmail.com")
page.get_by_role("button", name="Continue with email").click()
time.sleep(20)
word = mail_receive()
page.get_by_label("One-time passcode").click()
page.get_by_label("One-time passcode").fill(word)
page.get_by_text("Create a new account").click()
time.sleep(30)
page.locator("div").filter(has_text=re.compile(r"Personal Account")).nth(5).click()
time.sleep(20)
# 連携
page.locator("#app div").filter(has_text=re.compile(r"^Connect Twitter$")).nth(3).click()
page.get_by_role("button", name="連携アプリを認証").click()
page.get_by_role("complementary").get_by_text("Connect Discord").click()
page.get_by_role("button", name="認証").click()
# ミント
page.get_by_role("button", name="Mint \"Welcome\" NFT").click()
page.get_by_role("button", name="Mint Badge").click()
# Unlink
page.locator(".el-box > .el-row").first.click()
page.get_by_role("button", name="Unlink").click()
page.locator(".el-box > .el-row").nth(1).click()
page.get_by_role("button", name="Unlink").click()
#ログアウト
time.sleep(5)
page.locator('rect').first.hover()
page.locator('li.el-menu-item:has-text("Logout")').first.click()
page.get_by_role("button", name="Log out").click()
time.sleep(5)メール受信部分はネットに落ちてたのを少しいじって使ってます。検索すれば似たようなコードが出てくると思います。
このコードでしてることは
1.XIONにメールのエイリアスで登録
2.メールに来たワンタイムパスワードを取得
3.サイトで入力
4.Twitterの連携
5.XIONの最低限のタスククリア
6.Twitterの連携解除
7.ログアウト
これをループさせていました。
当時は例外処理で無理に動かす等を考えていなかったため、ネットが重くてひらかない、メールの受信が遅くてパスワードがわからない等のエラーで止まってしまってストレスで回しきれず1垢分だけやって辞めてしまいました。
結果としてはXIONから500XIONをもらえていたので、色々我慢して20垢やるだけでS級になれたかも知らなかったって話でした。
そもそも、コードが書くのが苦手なのとPythonについての知識が不足していることや、当時は働いていたため時間が大きく取れず作ったはいいけど動かすのが面倒に感じて動かさなかったため1垢しかもらうことが出来ませんでした…。
こんなに大きくもらえるのわかってたら頑張ってたのに…わからない中給付金活動はしないといけないので難しいですね…。
まとめ
簡単なbotでも収益を得る可能性はありますが、そもそもその存在を知らないと出来ないので、botを作る能力も大事ですが、そもそも仮想通貨の知識が無いと思いつきもしないので普段から色々なものを触るのが大事だと思います。
しろいのが普段いるサーバーの紹介です。
もし良かったら、鯖で話してもらえると嬉しいです。
エッジ等あるかもしれないチャンネルについてはレベル制限があるので普段から話してるといいことがあるかもしれないです!



コメント