Package: clashogram
Contentsclashogram Build Status Build status Pypi statusRequirementsInstallationWith DockerUsageObtaining The Chat IDStarting The ProgramSetting Language on WindowsRun as a serviceContribution (PRs welcome!)I18NCreditsLicenseRussian Translationsراهنمای فارسیclashogramClash of Clans war moniting for telegram channels.NOTE: Clash of Clans API data is always 10 minutes behind the game
events. This is not a bug in this program.clashogrammonitors your clan’s warlog and posts the following
messages to a Telegram channel:Preparation started (with clans and players information)War startedNew attacks (with details)War overRequirementsTo run the program you need to have python 3.3 or higher. You will also
needpipto install python dependencies. Moreover, using avirtualenvmakes
installation much easier, otherwise you have to install everything
system-wide. On Linux you would need to run commands withsudo, on
windows with administrator account.InstallationFrom pypi:$ pip install clashogramFrom Github (for development):$ git clone https://github.com/mehdisadeghi/clashogram.git
$ cd clashogram
$ pip install flit
$ flit install --symlinkWith DockerIn order to run the latest docker version do the following:$ docker run -it mehdisadeghi/clashogram:latestThis will prompt for the necessary parameters and start the app. Slighty better would be:$ docker run --env-file=<ENV_FILE> --name clashogram --restart=always -d mehdisadeghi/clashogram:latestThis will run the container in the background and restart it if it fails.ENV_FILEshould contain onekey=valueper line (the app params). In my experience this works good enought, however for some reason sometimes docker does not start the container after reboot. In that case a systemd unit or similar could be used to start theclashogramcontainer above.UsageIn order to use the program do the following:Open a Clash of Clans developer account athttps://developer.clashofclans.com/.Find your external IP address using a website likethis.Go to your CoC developer page and create an API token for the IP number you just found.Create a Telegram bot using BotFather and copy its token.[For Channels] Create a new Telegram channel and add the bot you just created as to that channel. As of May 2020, bots can only be added as administrators to channels. If you want to post to a group instead of a channel see the instructions below.[For Groups] Add the bot you just created to your Telegram group (create one if necessary).Obtaining The Chat IDIn order to send messages to a channel or a chat in Telegram we need the ID of that chat, i.e.chat_id. This is how Telegram API works. For public channels it is possible to use the name of the channel prefixed with@aschat_id, e.g.@mypublicchannel. However, for private channels and group chats we need to obtain thechat_id.Take the following steps to obtain the correctchat_id:Add the bot to the group or channelMake sure to write something in the channel/chatUse thebot_tokenfrom the step 4 of the previous section and run one of these this command:# For a group chat run this
$ curl --silent --request POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates | jq '.result | map(select(.message.chat.type == "group")) | .[0].message.chat.id'

# For a channel run this
$ curl --silent --request POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates | jq '.result | map(select(.channel_post.chat.type == "channel")) | .[0].channel_post.chat.id'You can omit thejqpart and just search for atype=grouportype=channelin the output and take note of itsid. This is what we will use in the rest of this document aschat_idfor channels and groups. Remember that you can also use@yourpublicchannelform aschat_idfor public channels.Now to make sure if thechat_idrealy points to a chat, run the following command and see whether your bot can post to your channel or group chat:$ curl --request POST --url https://api.telegram.org/bot<YOUR_BOT_TOKEN>/sendMessage\?chat_id\=<CHAT_ID_FROM_THE_PREVIOUS_STEP>\&text\=hiIf it does not work, make sure you have done the previous steps correctly or open an issue on GitHub.Starting The ProgramNow we can proceed with starting the program. Run the following command to install and start the program:$ pip install clashogram
$ clashogram.py --coc-token <COC_API_TOKEN> --clan-tag <CLAN_TAG> --bot-token <TELEGRAM_BOT_TOKEN> --chat-id <CHAT_ID> --forever

NOTE: Remember that channel names begin with ``@`` and chat_ids are numbers (often negative).If you don’t want attack updates in your channel add--mute-attacksto the above command.In order to have messages in a different locale do the following and
then run the program:$ export LANGUAGE=<LANGUAGE_CODE>
# This is for Persian
$ export LANGUAGE=faOr do it in one step:$ LANGUAGE=fa clashogram.py --coc-token <COC_API_TOKEN> --clan-tag <CLAN_TAG> --bot-token <TELEGRAM_BOT_TOKEN> --chat-id <CHAT_ID>Setting Language on WindowsMake sure to runsetLANGUAGE=<your_lang_code_here>on windows before running the program.Run as a serviceThe simplest way to use Clashogram is leave it running in background
using eitherbyobuorGNU
Screen. Another solution is to
install a systemd unit:[Unit]
Description=Clashogram Daemon
After=network.target

[Service]
WorkingDirectory=/path/to/clashogram/
EnvironmentFile=/path/to/env/file
ExecStart=/path/to/python /path/to/clashogram.py
Restart=on-failure
User=someuser

[Install]
WantedBy=multi-user.targetSearch internet for more information on installing systemd units on your
OS.Contribution (PRs welcome!)The Telegram notification is isolated from the rest of the program. You
can replace it with anything else to have your messages sent to
somewhere else.Fork and clone the repository and send a PR. Make sure tests pass
beforehand:python -m unittest discoverOr withpy.test:pip install pytest
py.test tests.pyI18NIn order toadd or update a new language catalog do the following:pip install babel # Install the babel i18n tool first.pybable init -i clashogram/locales/messages.pot -d clashogram/locales -l <LANGUAGE_CODE>
pybable update -i clashogram/locales/messages.pot -d clashogram/locales -l <LANGUAGE_CODE>For example:pybable init -i clashogram/locales/messages.pot -d clashogram/locales -l fa
pybable update -i clashogram/locales/messages.pot -d clashogram/locales -l faIn case of adding new messages extract them and compile again:pybabel extract clashogram/ -o clashogram/locales/messages.pot --project Clashogram --version 0.6.0
pybabel update -i clashogram/locales/messages.pot -d clashogram/locales
pybabel compile -d clashogram/localesFor more information on internationalization seeBabel.CreditsThanks Ali Ayatollahi and other members from IRAN clan (tag #YVL0C8UY) for the initial idea and testing.LicenseMITRussian TranslationsYou can read this document in Russian thanks to Timur from Illuminati clan. Thanks Timur!this document in Russianراهنمای فارسیبرای مطالعه راهنمای فارسی بهاین آدرسسر بزنید.