Compare commits

..

3 Commits

Author SHA1 Message Date
dfaaef45c8 Merge pull request 'initial-implementation' (#1) from initial-implementation into main
Some checks failed
Docker Image CI for Gitea / build_and_publish (push) Failing after 19s
Reviewed-on: #1
2025-05-02 16:12:34 +02:00
9c971cc077 added gitea workflow 2025-05-02 11:46:27 +02:00
79cbb5b189 initial commit (not working due to version change in discord.py) 2025-05-02 11:41:45 +02:00
3 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,19 @@
name: Docker Image CI for Gitea
on:
push:
branches:
- main
jobs:
build_and_publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker Login
run: docker login --username enub --password ${{ secrets.DOCKER_ACCESS_TOKEN }} git.villarheni.de
- name: Build Image
run: docker build . --tag git.villarheni.de/enub/translatomat:latest
- name: Push Image
run: docker push git.villarheni.de/enub/translatomat:latest

93
main.py Normal file
View File

@ -0,0 +1,93 @@
import os
import googletrans
import discord
from discord import app_commands
from discord.ext import commands
discord_bot_token = os.environ['TOKEN_DISCORD']
intents = discord.Intents.all()
bot_client = discord.Client(intents=intents)
tree = app_commands.CommandTree(bot_client)
"""
My Bots Overview:
https://discordapp.com/developers/applications
Discord Bot API Documentation:
https://discordpy.readthedocs.io/en/latest/api.html
Changelog:
https://discordpy.readthedocs.io/en/latest/whats_new.html
"""
###
# Discord Events
###
@bot_client.event
async def on_ready():
print("Discord.py version {}".format(discord.__version__))
print("googletrans version {}".format(googletrans.__version__))
await tree.sync()
await bot_client.change_presence(activity=discord.Game(name="Translating only for you!"))
@bot_client.event
async def on_message(ctx: discord.Message):
if ctx.author.bot:
return
translator = googletrans.Translator()
detected_language = translator.detect(ctx.content)
detected_language = detected_language.lang
translator_category = discord.utils.find(lambda c: c.name == "Translatomat", ctx.guild.categories)
for channel in translator_category.channels:
language_to_translate_to = channel.name
if detected_language != language_to_translate_to:
translated_message = translator.translate(str(ctx.clean_content), language_to_translate_to).text
if str(ctx.clean_content).lower() == str(translated_message).lower():
return
embed = discord.Embed(color=0x04a1ff)
embed.add_field(name="Translated Message", value=translated_message, inline=False)
embed.add_field(name="Original Message", value=ctx.content, inline=False)
embed.add_field(name="Author", value=ctx.author.mention, inline=True)
embed.add_field(name="Channel", value=ctx.channel.mention, inline=True)
embed.add_field(name="Message Link", value=ctx.jump_url, inline=True)
await channel.send(embed=embed)
await bot_client.process_commands(ctx)
###
# Commands
###
@bot_client.command(name="translate", aliases=['t'], pass_content=True)
async def __command_translate(ctx: commands.Context, language: str, *text: str):
try:
translator = googletrans.Translator()
message_text = " ".join(text)
translated_text = translator.translate(message_text, language).text
await ctx.reply(translated_text)
except:
await ctx.reply("Error: Translation failed somehow\n"
"Format has to be: +translate [language] [text]")
if __name__ == "__main__":
bot_client.run(discord_bot_token )

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
discord.py==2.5.2
googletrans==4.0.2