Files
PICable/main.py
2025-02-23 23:53:10 +00:00

65 lines
1.6 KiB
Python

# This example requires the 'message_content' intent.
import discord
from sys import argv
from threading import Thread
from time import sleep
import asyncio
import PICable
if len(argv) != 3:
print('Usage:\n\t' + argv[0] + ' <discord_token> <github_token>')
discord_token = argv[1]
github_token = argv[2]
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
def reply_msg(message, owner, repo):
asyncio.run(reply_msg_async(message, owner, repo))
return
async def reply_msg_async(message, owner, repo):
await message.reply(PICable.PICable(owner, repo, github_token))
return
async def check_repo_async(message, owner, repo):
sent = await message.reply('Checking ' + owner + '/' + repo + '.. /')
thread = Thread(target=reply_msg, args=(message, owner, repo))
thread.start()
counter = 0
chars = '-\\|/'
while thread.is_alive():
char = chars[counter]
await sent.edit(content='Checking ' + owner + '/' + repo + '.. ' + char)
counter += 1
counter %= 4
await asyncio.sleep(3)
return
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
await client.change_presence(activity=discord.Game("with PIC ideas"))
@client.event
async def on_message(message):
if message.author == client.user:
return
if not message.content.startswith('$picable'):
return
msg : str = message.content
parts = msg.split()
if len(parts) != 3:
await message.reply('Usage:\n\t$picable <owner> <repo>')
return
loop = asyncio.get_event_loop()
loop.create_task(check_repo_async(message, parts[1], parts[2]))
return
client.run(discord_token)