mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
CV!
This commit is contained in:
parent
c1436ffa05
commit
a908990771
3 changed files with 103 additions and 28 deletions
12
bots.py
Normal file
12
bots.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import multiprocessing
|
||||||
|
import telegrambot
|
||||||
|
import discordbot
|
||||||
|
|
||||||
|
discord_users_pipe = multiprocessing.Pipe()
|
||||||
|
|
||||||
|
discord = multiprocessing.Process(target=discordbot.process, args=(discord_users_pipe[0],))
|
||||||
|
telegram = multiprocessing.Process(target=telegrambot.process, args=(discord_users_pipe[1],))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
discord.start()
|
||||||
|
telegram.start()
|
|
@ -6,6 +6,7 @@ import errors
|
||||||
|
|
||||||
# Init the event loop
|
# Init the event loop
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
# Init the config reader
|
# Init the config reader
|
||||||
|
@ -13,14 +14,14 @@ import configparser
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.read("config.ini")
|
config.read("config.ini")
|
||||||
|
|
||||||
# Open a new postgres session
|
|
||||||
session = db.Session()
|
|
||||||
|
|
||||||
# Init the discord bot
|
# Init the discord bot
|
||||||
client = discord.Client()
|
client = discord.Client()
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
async def on_message(message: discord.Message):
|
async def on_message(message: discord.Message):
|
||||||
|
# Open a new postgres session
|
||||||
|
session = db.Session()
|
||||||
|
try:
|
||||||
if message.content.startswith("!register"):
|
if message.content.startswith("!register"):
|
||||||
try:
|
try:
|
||||||
username = message.content.split(" ", 1)[1]
|
username = message.content.split(" ", 1)[1]
|
||||||
|
@ -37,6 +38,20 @@ async def on_message(message: discord.Message):
|
||||||
session.add(d)
|
session.add(d)
|
||||||
session.commit()
|
session.commit()
|
||||||
await client.send_message(message.channel, "✅ Sincronizzazione completata!")
|
await client.send_message(message.channel, "✅ Sincronizzazione completata!")
|
||||||
|
finally:
|
||||||
client.run(config["Discord"]["bot_token"])
|
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
async def update_users_pipe(users_connection):
|
||||||
|
await client.wait_until_ready()
|
||||||
|
while True:
|
||||||
|
msg = await loop.run_in_executor(None, users_connection.recv)
|
||||||
|
if msg == "/cv":
|
||||||
|
discord_members = list(client.get_server(config["Discord"]["server_id"]).members)
|
||||||
|
users_connection.send(discord_members)
|
||||||
|
|
||||||
|
|
||||||
|
def process(users_connection):
|
||||||
|
print("Discordbot starting...")
|
||||||
|
loop.create_task(update_users_pipe(users_connection))
|
||||||
|
client.run(config["Discord"]["bot_token"])
|
|
@ -2,12 +2,15 @@ import db
|
||||||
import errors
|
import errors
|
||||||
from telegram import Bot, Update, Message
|
from telegram import Bot, Update, Message
|
||||||
from telegram.ext import Updater, CommandHandler
|
from telegram.ext import Updater, CommandHandler
|
||||||
|
from discord import Status as DiscordStatus
|
||||||
|
|
||||||
# Init the config reader
|
# Init the config reader
|
||||||
import configparser
|
import configparser
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
config.read("config.ini")
|
config.read("config.ini")
|
||||||
|
|
||||||
|
users_connection = None
|
||||||
|
|
||||||
def cmd_register(bot: Bot, update: Update):
|
def cmd_register(bot: Bot, update: Update):
|
||||||
session = db.Session()
|
session = db.Session()
|
||||||
try:
|
try:
|
||||||
|
@ -27,10 +30,55 @@ def cmd_register(bot: Bot, update: Update):
|
||||||
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
|
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
def cmd_discord(bot: Bot, update: Update):
|
||||||
|
users_connection.send("/cv")
|
||||||
|
server_members = users_connection.recv()
|
||||||
|
message = ""
|
||||||
|
for member in server_members:
|
||||||
|
if member.status == DiscordStatus.offline and member.voice.voice_channel is None:
|
||||||
|
continue
|
||||||
|
if member.bot:
|
||||||
|
continue
|
||||||
|
# Online status emoji
|
||||||
|
if member.status == DiscordStatus.online:
|
||||||
|
message += "🔵 "
|
||||||
|
elif member.status == DiscordStatus.idle:
|
||||||
|
message += "⚫️ "
|
||||||
|
elif member.status == DiscordStatus.dnd:
|
||||||
|
message += "🔴 "
|
||||||
|
elif member.status == DiscordStatus.offline:
|
||||||
|
message += "⚪️ "
|
||||||
|
# Nickname
|
||||||
|
if member.nick is not None:
|
||||||
|
message += member.nick
|
||||||
|
else:
|
||||||
|
message += member.name
|
||||||
|
# Voice
|
||||||
|
if member.voice.voice_channel is not None:
|
||||||
|
# Voice status
|
||||||
|
if member.voice.self_deaf:
|
||||||
|
message += f" | 🔇 {member.voice.voice_channel.name}"
|
||||||
|
elif member.voice.self_mute:
|
||||||
|
message += f" | 🔈 {member.voice.voice_channel.name}"
|
||||||
|
else:
|
||||||
|
message += f" | 🔊 {member.voice.voice_channel.name}"
|
||||||
|
# Game or stream
|
||||||
|
if member.game is not None:
|
||||||
|
if member.game.type == 0:
|
||||||
|
message += f" | 🎮 {member.game.name}"
|
||||||
|
elif member.game.type == 1:
|
||||||
|
message += f" | 📡 [{member.game.name}]({member.game.url})"
|
||||||
|
message += "\n"
|
||||||
|
bot.send_message(update.message.chat.id, message, disable_web_page_preview=True, parse_mode="Markdown")
|
||||||
|
|
||||||
|
|
||||||
|
def process(discord_users_connection):
|
||||||
|
print("Telegrambot starting...")
|
||||||
|
global users_connection
|
||||||
|
users_connection = discord_users_connection
|
||||||
u = Updater(config["Telegram"]["bot_token"])
|
u = Updater(config["Telegram"]["bot_token"])
|
||||||
u.dispatcher.add_handler(CommandHandler("register", cmd_register))
|
u.dispatcher.add_handler(CommandHandler("register", cmd_register))
|
||||||
|
u.dispatcher.add_handler(CommandHandler("discord", cmd_discord))
|
||||||
u.start_polling()
|
u.start_polling()
|
||||||
try:
|
|
||||||
u.idle()
|
u.idle()
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
Loading…
Reference in a new issue