Discord Integration

Discord Integration [Paid] 2.8.6

No permission to buy ($35.00)
How can I override the profile picture the forum assigns when someone registers using discord? I want new members to have the same profile picture, not the one from their discord account. (More specifically I don't want discord's default profile picture on new users on my forum.)
Sorry, missed this. XenForo does this automatically. You’d need an add-on to opt-out of that behaviour.
Is there a way to hide some channels when you want to promote a post to discord (like log channels), or reorder them so the unused are below the others ? Because now they are ordered like they are created at discord.
Not at the moment though it’s something I can look in to.
 
Thank you for the speedy reply. Could you make a modification for multiple discord servers? The way our community is structured, we use multiple server.
@NixFifty is there a way that we can do multiple installs or instances? One site but 6 discord servers. That way each instance would be tied to one server.
There are no plans to support multiple Discord servers at the moment. It would require custom development and most likely significant changes to accommodate.
 
@NixFifty Getting Server error log.

Code:
ErrorException: [E_NOTICE] Trying to access array offset on value of type bool src/addons/NF/Discord/XF/Entity/UserAlert.php:32

Generated by: Mohani Jun 22, 2020 at 5:18 PM

Stack trace

#0 src/addons/NF/Discord/XF/Entity/UserAlert.php(32): XF::handlePhpError(8, '[E_NOTICE] Tryi...', '/home/nadda/pub...', 32, Array)
#1 src/XF.php(291): NF\Discord\XF\Entity\UserAlert->NF\Discord\XF\Entity\{closure}()
#2 src/XF/Mvc/Dispatcher.php(156): XF::triggerRunOnce(true)
#3 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#4 src/XF/App.php(2190): XF\Mvc\Dispatcher->run()
#5 src/XF.php(391): XF\App->run()
#6 index.php(20): XF::runApp('XF\\Pub\\App')
#7 {main}

Request state

array(4) {
  ["url"] => string(34) "/posts/1070056/react?reaction_id=1"
  ["referrer"] => string(43) "/threads/67478/page-9"
  ["_GET"] => array(1) {
    ["reaction_id"] => string(1) "1"
  }
  ["_POST"] => array(4) {
    ["_xfRequestUri"] => string(21) "/threads/67478/page-9"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfResponseType"] => string(4) "json"
  }
}
 
NixFifty updated Discord Integration with a new update entry:

Version 2.4.0

  • Add the ability to automatically add users to your Discord server when they first associate their account.
  • Switch API and other URLs from discordapp.com to discord.com. This is in line with Discord's recently announced endpoint migration that will come in to effect on November 7, 2020.
  • Bump PHP version requirement to 7.2.0 or greater.
  • Bump XenForo version requirement to 2.1.0 or greater.
  • Other assorted code improvements and clean-up.

Read the rest of this update entry...
 
Purchased the latest version 2.4.1 three days ago but receiving the following error:
"No channels found. Perhaps the bot lacks the "Manage Channels" permission."
Although testing integration returns successful result! Can you provide the latest up to date documentation as it looks like the one in the "overview" is outdated!
 
Purchased the latest version 2.4.1 three days ago but receiving the following error:

Although testing integration returns successful result! Can you provide the latest up to date documentation as it looks like the one in the "overview" is outdated!
Try giving your bot Administrator privileges.

Note: not sure of the negative effects of this but I’m sure it will work.
 
Is it required? Admin? not anything else ?

I do not prefer granting FULL ACCESS unless it really needs it. Is it required?

Also, when I check admin permission, there is no save option! I thought it might be auto save but I refresh the page and it's gone.
 
Last edited:
Purchased the latest version 2.4.1 three days ago but receiving the following error:

Although testing integration returns successful result! Can you provide the latest up to date documentation as it looks like the one in the "overview" is outdated!
Feel free to start a conversation with me and I can have a look for you.
 
Is it required? Admin? not anything else ?

I do not prefer granting FULL ACCESS unless it really needs it. Is it required?

Also, when I check admin permission, there is no save option! I thought it might be auto save but I refresh the page and it's gone.

It's interesting that you mention it.

Actually, in my server the bot only has "manage roles" and no other permissions, yet it still managed to get a full list of channels even hidden ones.

Of course I am unable to edit my channels from the integration's control panel in the forum, and this is intentional by the lack of manage channels permission, as I am more security oriented and have no reason to want to manage my channels from my forum admin panel.

So, the bare minimum requirement to have automatic role <-> usergroup syncing is only a "manage roles" permission.
 
I noticed that there was also a permission “bot”, what does that mean?
"bot" is a scope in Discord's OAuth2 that defines a a set of privileges the application has, or what its capabilities are on Discord.

 
@NixFifty Bug report:

When a Community Server has a channel set as an 'announcement' channel, this channel does not appear in the integration and cannot be used for sending thread notifications to.

1598655460886.webp
 
@NixFifty Getting frequently lot of Server error log.

Code:
GuzzleHttp\Exception\ConnectException: cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to discord.com:443 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:185

Generated by: prinanad Sep 6, 2020 at 10:03 PM

Stack trace

#0 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(149): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(102): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 src/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 src/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#4 src/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#5 src/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(66): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#6 src/vendor/guzzlehttp/guzzle/src/Middleware.php(30): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#7 src/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#8 src/vendor/guzzlehttp/guzzle/src/Middleware.php(60): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#9 src/vendor/guzzlehttp/guzzle/src/HandlerStack.php(67): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#10 src/vendor/guzzlehttp/guzzle/src/Client.php(277): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#11 src/vendor/guzzlehttp/guzzle/src/Client.php(125): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array)
#12 src/vendor/guzzlehttp/guzzle/src/Client.php(131): GuzzleHttp\Client->requestAsync('POST', Object(GuzzleHttp\Psr7\Uri), Array)
#13 src/addons/NF/Discord/Api.php(713): GuzzleHttp\Client->request('POST', 'https://discord...', Array)
#14 src/addons/NF/Discord/Api.php(496): NF\Discord\Api->request(Array, 'channels/496302...', Array)
#15 src/addons/NF/Discord/XF/Entity/Post.php(56): NF\Discord\Api->createMessage('496302814436524...', 'prinanad replie...', Array)
#16 src/addons/NF/Discord/XF/Service/Thread/Replier.php(19): NF\Discord\XF\Entity\Post->nfNotifyDiscord('thread_reply')
#17 src/XF/Pub/Controller/Thread.php(330): NF\Discord\XF\Service\Thread\Replier->sendNotifications()
#18 src/addons/xenMade/SEO/XF/Pub/Controller/Thread.php(203): XF\Pub\Controller\Thread->finalizeThreadReply(Object(NF\Discord\XF\Service\Thread\Replier))
#19 src/addons/SV/UserEssentials/XF/Pub/Controller/Thread.php(46): xenMade\SEO\XF\Pub\Controller\Thread->finalizeThreadReply(Object(NF\Discord\XF\Service\Thread\Replier))
#20 src/XF/Pub/Controller/Thread.php(463): SV\UserEssentials\XF\Pub\Controller\Thread->finalizeThreadReply(Object(NF\Discord\XF\Service\Thread\Replier))
#21 src/addons/KL/EditorManager/XF/Pub/Controller/Thread.php(27): XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#22 src/addons/Snog/ForceSecure/XF/Pub/Controller/Thread.php(17): KL\EditorManager\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#23 src/addons/xenMade/STFRT/XF/Pub/Controller/Thread.php(111): Snog\ForceSecure\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#24 src/XF/Mvc/Dispatcher.php(350): xenMade\STFRT\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#25 src/XF/Mvc/Dispatcher.php(257): XF\Mvc\Dispatcher->dispatchClass('XF:Thread', 'AddReply', Object(XF\Mvc\RouteMatch), Object(SV\ElasticSearchEssentials\XF\Pub\Controller\Thread), NULL)
#26 src/XF/Mvc/Dispatcher.php(113): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\ElasticSearchEssentials\XF\Pub\Controller\Thread), NULL)
#27 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#28 src/XF/App.php(2190): XF\Mvc\Dispatcher->run()
#29 src/XF.php(391): XF\App->run()
#30 index.php(20): XF::runApp('XF\\Pub\\App')
#31 {main}

Request state

array(4) {
  ["url"] => string(44) "/threads/recent-celebrity.24/add-reply"
  ["referrer"] => string(66) "/threads/recent-celebrity.24/page-2212"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(6) {
    ["message_html"] => string(0) ""
    ["message"] => string(175) "[b]Lisa Scott-Lee by the pool in Marbella 09.07.2004[/b]

[URL=https://imgbox.com/z4Kyesjh][center][IMG]xxxx[/IMG][/URL][/center] "
    ["last_date"] => string(10) "1599404225"
    ["last_known_date"] => string(10) "1599404225"
    ["klPage"] => string(4) "2212"
    ["_xfToken"] => string(8) "********"
  }
}

Code:
GuzzleHttp\Exception\ConnectException: cURL error 52: Empty reply from server (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:185

Generated by: drahman Sep 6, 2020 at 10:55 PM

Stack trace

#0 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(149): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 src/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(102): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 src/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 src/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#4 src/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#5 src/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php(66): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#6 src/vendor/guzzlehttp/guzzle/src/Middleware.php(30): GuzzleHttp\PrepareBodyMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#7 src/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php(70): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#8 src/vendor/guzzlehttp/guzzle/src/Middleware.php(60): GuzzleHttp\RedirectMiddleware->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#9 src/vendor/guzzlehttp/guzzle/src/HandlerStack.php(67): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Request), Array)
#10 src/vendor/guzzlehttp/guzzle/src/Client.php(277): GuzzleHttp\HandlerStack->__invoke(Object(GuzzleHttp\Psr7\Request), Array)
#11 src/vendor/guzzlehttp/guzzle/src/Client.php(125): GuzzleHttp\Client->transfer(Object(GuzzleHttp\Psr7\Request), Array)
#12 src/vendor/guzzlehttp/guzzle/src/Client.php(131): GuzzleHttp\Client->requestAsync('POST', Object(GuzzleHttp\Psr7\Uri), Array)
#13 src/addons/NF/Discord/Api.php(713): GuzzleHttp\Client->request('POST', 'https://discord...', Array)
#14 src/addons/NF/Discord/Api.php(496): NF\Discord\Api->request(Array, 'channels/496353...', Array)
#15 src/addons/NF/Discord/XF/Entity/UserAlert.php(39): NF\Discord\Api->createMessage('496353487949529...', '', Array)
#16 src/XF.php(291): NF\Discord\XF\Entity\UserAlert->NF\Discord\XF\Entity\{closure}()
#17 src/XF/Mvc/Dispatcher.php(156): XF::triggerRunOnce(true)
#18 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#19 src/XF/App.php(2190): XF\Mvc\Dispatcher->run()
#20 src/XF.php(391): XF\App->run()
#21 index.php(20): XF::runApp('XF\\Pub\\App')
#22 {main}

Request state

array(4) {
  ["url"] => string(33) "/posts/742765/react?reaction_id=1"
  ["referrer"] => string(113) "/threads/desi-collections.59769/page-891"
  ["_GET"] => array(1) {
    ["reaction_id"] => string(1) "1"
  }
  ["_POST"] => array(4) {
    ["_xfRequestUri"] => string(91) "/threads/desi-collections.59769/page-891"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfResponseType"] => string(4) "json"
  }
}
 
Top Bottom