「Discord Botで実装するマネーロンダリング検知システム」

すごいとびとびになってしまい申し訳ありません、、、
前回の記事からいろいろ学びが深まり、Contaboというレンタルサーバーを借りたりしました!
最近はdiscordでコピペプログラミング部というサーバーを作りほぼ毎日プログラミングを楽しく学習しています。
本題ですが最近知ったPayPaythonというモジュールを使いdiscordのユーザーIDとPayPayのDisplaynameをセットで記録し2回目以降のマネーロンダリングを防止するコードをdiscord.pyで書きました。
PayPaythonはほんとに素晴らしいモジュールですので是非皆さん見てください!
https://github.com/taka-4602/PayPaython

import discord
import re
import PayPaython
import json
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)


proxy_ip = ''
proxy_port = ''
proxy_username = ''
proxy_password = ''

proxy = {
    'http': f'http://{proxy_username}:{proxy_password}@{proxy_ip}:{proxy_port}',
    'https': f'http://{proxy_username}:{proxy_password}@{proxy_ip}:{proxy_port}'
}
json_file_path = r""

# Function to save usernames dictionary to JSON file
def save_usernames_to_json():
    with open(json_file_path, "w") as file:
        json.dump(usernames, file)

# Load usernames from JSON file if it exists
def load_usernames_from_json():
    try:
        with open(json_file_path, "r") as file:
            return json.load(file)
    except FileNotFoundError:
        return {}
usernames = load_usernames_from_json()
@client.event
async def on_message(message):
    if message.content.startswith("https://pay.paypay.ne.jp/"):
        match = re.match(r"https://pay.paypay.ne.jp/(.*)", message.content)
        if match:
            # 抽出したURLの後の部分を取得
            additional_info = match.group(1)
            # ここでadditional_infoに基づいて処理を続ける
            await message.channel.send(f"PayPayのリンクが送信されました、読み取り: {additional_info}")
            pay2_instance = PayPaython.Pay2(proxy=proxy)
            response = pay2_instance.check_link(additional_info)
            description = response['payload']['pendingP2PInfo']['description']
            username = description.replace("paypayIDを取得しました")
            await message.channel.send("リンクからPayPayIDを取得しました")
            sender_id = str(message.author.id)  
            if sender_id in usernames and usernames[sender_id] == username:
                await message.channel.send(embed=discord.Embed(title="記録のdiscordIDとPayIDと情報が一致",description="マネーロンダリングの心配はありません"))
            elif sender_id in usernames or username in usernames.values():
                await message.channel.send(title="記録のdiscordIDとPayIDと情報が不一致",description="マネーロンダリングの恐れがあります")
            else:
                usernames[sender_id] = username
                save_usernames_to_json()
                await message.channel.send(embed=discord.Embed(title="送金元情報確認", description=f"あなたのDiscordIDとPayPayIDをセットで記録しました。マネーロンダリング防止にご協力ください。"))

@client.event
async def on_ready():
    print(f'{client.user} が起動しました。')

client.run('bottoken')

とこんな感じに仕上がりました。
サーバーのお友達からはディスプレイネームじゃなくてIDのほうが確実と教えてもらいましたがいろいろ試してもダメだったのでこの記事を見た方に託します、、、(え?)

日本国内からのアクセスの場合はプロキシはなくても大丈夫だと思います!
ここまでご覧くださりありがとうございました
よければ自分のディスコードサーバーにお越しください!

https://discord.gg/YKT2VjUJJ8

この記事が気に入ったらサポートをしてみませんか?